Согласно Мифическому Месяцу Человека, главная причина люди добавления к последнему проекту делают, это позже - O (n^2) коммуникация наверху.
я испытал одно основное исключение к этому: если существуют [только 110] один человек на проекте, они почти всегда обрекаются. Добавление второго ускоряет его почти каждый раз. Поэтому коммуникация не служебная в этом случае - это - полезная возможность разъяснить Ваши мысли и сделать меньше глупых ошибок.
кроме того, поскольку Вы, очевидно, знали при регистрации вопроса совет с Мифического Месяца Человека только относится поздний проекты. Если Ваш проект не является уже поздним, довольно возможно, что добавление людей не сделает его позже. Принятие Вас делает это правильно, конечно.
AFAIK Lucene может делать то, что вы хотите. С помощью StandardAnalyzer
и StopAnalyzer
вы можете удалить стоп-слово. В сочетании с проектом Lucene contrib-snowball
(который включает работу из Snowball ), вы также можете выполнить стемминг.
Но для стемминга также рассмотрите этот ответ на: Алгоритм выделения слов, который производит реальные слова
Это стандартные требования для обработки естественного языка, поэтому я бы посмотрел в таких наборах инструментов. Поскольку вам требуется Java, я бы начал с OpenNLP: http://opennlp.sourceforge.net/
Если вы можете посмотреть на другие языки, там также есть NLTK (Python)
Обратите внимание, что «ваш самый смешной парень, которого я знаю» не является стандартным синтаксисом, и поэтому труднее понять, чем «Ты самый смешной парень из всех, кого я знаю». Не невозможно, но намного сложнее. Я не знаю ни одной системы, которая бы приравняла «ваш» к «вы есть».
Вот полный список инструментов НЛП . Иногда имеет смысл создавать их самостоятельно, поскольку они будут легче, и у вас будет больше контроля над внутренней работой: используйте простое регулярное выражение для токенизации. Для стоп-слов просто вставьте список ниже или другой список в HashSet:
Вот одна из многих Java-реализаций porter stemer ).