удалить стоп-слова в Java - PullRequest
3 голосов
/ 06 июля 2010

У меня есть список стоп-слов, который содержит около 30 слов и набор статей.

Я хочу проанализировать каждую статью и удалить из нее эти стоп-слова.

Я не являюсьуверен, что это самый эффективный способ сделать это.

например, я могу перебрать стоп-лист и заменить слово в статье, если оно существует, с пробелами, но это не кажется хорошим.1009 *

Ответы [ 4 ]

4 голосов
/ 06 июля 2010
  • Поместите стоп-слова в java.util.Set
  • Разделить ввод на слова
  • Для каждого входного слова посмотрите, содержится ли оно в наборе стоп-слов, если нет, запишите в выходной файл
1 голос
/ 06 июля 2010

Замена слов будет неэффективной. Лучше всего, вероятно, разбирать статью слово за словом и копировать каждое слово в новый StringBuffer; если это не стоп-слово, в этом случае вы копируете все, что хотите, вместо него. StringBuffer гораздо эффективнее, чем String.

Как вы храните стоп-слова, вероятно, неважно, если их всего тридцать или около того. Набор, вероятно, хорошая ставка.

0 голосов
/ 06 июля 2010

Прочитайте слово из ввода и скопируйте его в свой StringBuilder (или куда бы вы ни поместили результат), если и только если его нет в списке стоп-слов. Вы сможете искать их быстрее, если поместите стоп-слова в нечто вроде HashTable.

Редактировать: упс, не знаю, о чем я думал, но вы хотите набор, а не HashTable (или любой другой словарь).

0 голосов
/ 06 июля 2010

Согласно Sun Java Tutorials , вы можете использовать Perl-совместимый разделитель \b в ваших регулярных выражениях. Если вы окружите слово ими, оно будет соответствовать только этому слову, независимо от того, идет ли за ним префикс или знак препинания или пробел.

...