2013-02-28 4 views
0

Если у меня есть только строки темы писем (нет других заголовков), есть ли хороший алгоритм (или пакет), чтобы сгруппировать их в набор «связанных сообщений»?Как скопировать темы темы письма в почтовые потоки?

Почтовое с темой

  • Our travel plans

, вероятно, связано с

  • Re: Our travel plans и
  • Re: Re: Our travel plans.

До сих пор так хорошо, но есть также

  • AW: Our travel plans
  • Fwd: Our travel plans
  • Our travel plans (Forward)

Я хочу кластера все они объединены в одну нить. Письма с такими темами, как plans, Re: Our meeting и т. Д., Не должны быть в этой теме, конечно. Я мог очень хорошо жить иерархическим результатом - на самом деле, я вроде как, потому что я ожидаю, что вероятность того, что письма с похожим контентом будет «ближе» друг к другу.

Итак, у меня есть много идей: совпадение суффикса, деревья префикса, расстояния Левенштейна, профили Q-Gram - может быть, слишком много. Поэтому я спрашиваю себя: «Кто-нибудь сделал это уже?»

+0

Ну, 'Fwd:' и т. Д. Легко идентифицировать как стоп-слова. Как только вы их удалите, ваш пример тривиален. Это высокоспециализированный (так что не научный интерес), но, скорее всего, будет работать хорошо. Что касается поиска стоп-слов, просто подсчитайте наиболее частое дополнение к темам в пределах одного потока. –

+0

В целом, тема является слишком коротким текстом для большинства методов (TF-IDF и т. Д.), Чтобы работать очень хорошо. –

+0

Я хотел бы подтвердить, что если у вас есть еще одна тема под названием «Наши планы отдыха» или «Наши планы путешествия на весну», вы не захотите, чтобы эти кластерные «Наши планы поездок». Если это так, то я согласен с подходом с шумовым словом. –

ответ

2

Для сравнения последовательностей я использую Open Refine (ранее Google Refine), чтобы опробовать алгоритмы кластеризации для точной настройки и идентификации используемого алгоритма. Он включает в себя ключевое столкновение (отпечаток пальца, ngram & с двойным метафоном) и ближайший сосед (расстояние levenshtein & предсказание путем частичного согласования (PPM)).

https://github.com/OpenRefine/OpenRefine/wiki/Installation-Instructions

После того, как вы импортировали ваши данные, просто использовать грани, чтобы сделать вашу кластеризацию.

Facet> Текст фасет> Кластер