Для предотвращения случайного присвоения я делаю привычку к инвертированию порядка условного выражения:
if ('undefined' !== typeof x) {
Это действительно зависит от того, что вы подразумеваете под «программно». Часть английского работает по простым для понимания правилам, а часть - нет. В основном это связано с частотой. Для краткого обзора вы можете прочитать «Слова и правила» Пинкера, но сделайте себе одолжение и не принимайте всю генеративную теорию лингвистики полностью близко к сердцу. Здесь гораздо больше эмпиризма, чем та школа мысли, которая действительно способствует поиску.
Многое из английского можно статистически лемматизировать. Кстати, стемминг или лемматизация - это тот термин, который вам нужен. Одним из наиболее эффективных лемматизаторов, которые отрабатывают статистические правила, загруженные с использованием исключений на основе частоты, является Morpha Lemmatizer . Вы можете попробовать это, если у вас есть проект, который требует такого упрощения строк, которые представляют определенные термины на английском языке.
Есть еще более наивные подходы, которые многого достигают в отношении нормализации связанных терминов. Взгляните на Porter Stemmer , который достаточно эффективен для объединения большинства терминов на английском языке.
Переход от единственного числа к множественному, английская форма множественного числа на самом деле довольно регулярна по сравнению с некоторыми другими европейскими языками, с которыми я немного знаком. Например, в немецком языке сложная форма множественного числа (например, Land -> Länder). Я думаю, что существует примерно 20-30 исключений, а остальные следуют довольно простому набору правил:
При этом преобразование множественного числа в единственное становится намного сложнее, потому что обратные случаи неоднозначны. Например:
Так что это можно сделать, но ты »
Является ли «оси» множественным числом от «топор» или от «оси»? Даже человек не может сказать без контекста.
Вы можете взглянуть на Inflector.net - мой порт класса перегиба Rails.
Это невозможно, как уже сказал nickf. Это было бы просто для классов слов, которые вы описали, но как насчет всех слов, которые естественно заканчиваются на s? Мое имя, например, Мариус, не во множественном числе Мариу. Думаю, то же самое и с автобусом. Множественное число слов в английском языке - это односторонняя функция (хеш-функция), и вам обычно нужна остальная часть предложения или абзаца для контекста.
Нет - английский - это не язык, который придерживается многих правил.
Думаю, лучше всего: