Проблема не хорошо подходит для регулярных выражений (вопрос был помечен Regex на момент написания). Регулярные выражения хороши для сопоставления шаблонов и регулярных языков. Английский язык не является обычным языком (т. Е. Английский язык не является формальным языком, который может быть выражен с помощью регулярных выражений), так как HTML и XML не являются регулярными языками. Форма множественного числа на английском языке на самом деле является хорошим способом продемонстрировать проблему: множественное число car
равно cars
, но множественное число для bus
не является buss
, но busses
. И точно так же, как вопрос, множественное число для mango
не является обычной формой mangos
, но mangoes
. И что еще хуже, не все существительные, оканчивающиеся в o
образуют множественное число путем добавления oes
- множественное число от piano
является pianos
не pianoes
.. А как насчет wolf
и wife
собирается wolves
и wives
и child
собирается children
?
Итак, я надеюсь, что вы кончены - вы обязательно столкнетесь с неприятностями.
Вам нужно будет написать список исключений из регулярной формы множественного числа, которая добавит s
после единственной формы.
Что вам нужно, это реализовать базовый стволовый (тот, который касается только формы множественного числа). Дополнительную информацию см. По адресу: http://tartarus.org/martin/PorterStemmer/
Как только вы создаете слова, вы можете использовать хеш-набор, чтобы эффективно проверять дубликаты. Один проход над словами, стебель и добавление в набор, если он еще не установлен. Если уже в наборе - удалите слово, так как оно было дубликатом. Единственная проблема заключается в том, что это не гарантирует, что вы удаляете множественную форму. Проблема не очень проста без английского словаря.
Если вам нужна действительно хорошая точность, вам нужно будет использовать словарь английских слов, который отображает единственное число в множественное число.
проверки слова один за другим. – furas
Регулярные выражения не являются правильным инструментом, чтобы решить, является ли слово множественным или нет. Вы просто хотите отфильтровать слова, которые заканчиваются на '' '? –
да. 's' & 'es' будет хорошо на данный момент – oscaradon