Как я делаю выделение основы слова или Лемматизацию?

Вы должны использовать

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d

перед своим последним правилом. Первые правила переписали запрошенный URL в допустимый (php) файл, к которому можно получить доступ, поэтому условия станут ложными. Если ни одно из правил не соответствовало ранее, но запрошенный URL-адрес еще является допустимым файлом (например, изображением), это правило также не обрабатывается.

Вы также должны опустить косую черту в последнем правиле: ^ (. *) / $, Потому что в противном случае это правило переписывает только URL с конечной косой чертой.

109
задан Community 23 May 2017 в 11:55
поделиться

8 ответов

Посмотрите в WordNet,

3
ответ дан 24 November 2019 в 03:21
поделиться

Официальная страница Мартина Портера содержит Porter Stemmer в PHP , а также других языках .

Если вы действительно серьезно относитесь к хорошему основанию, хотя вам нужно начать с чего-то вроде алгоритма Портера, уточните его, добавив правила для исправления неправильных случаев, общих для вашего набора данных, и, наконец, добавьте много исключений из правил. Это может быть легко реализовано с помощью пар ключ / значение (dbm / hash / dictionaries), где ключ - это слово, которое нужно искать, а значение - это слово со стеблем для замены оригинала. Коммерческая поисковая система, над которой я работал, однажды закончилась 800 исключениями для модифицированного алгоритма Портера.

8
ответ дан 24 November 2019 в 03:21
поделиться

Я попробовал ваш список терминов в этой демонстрации снежного кома сайт и результаты выглядят хорошо ....

  • кошки -> кошка
  • бегут -> бегут
  • бегут -> бегут
  • кактус -> кактус
  • кактусы -> кактус
  • community -> communiti
  • community -> communiti

Предполагается, что стеммер должен перевернуть склонные формы слов до некоторого общего корня. На самом деле задача не состоит в том, чтобы сделать этот корень «правильным» словарное слово. Для этого вам нужно взглянуть на морфологические / орфографические анализаторы .

Я думаю , что этот вопрос примерно такой же, и ответ Каарела на этот вопрос - где я взял вторая ссылка от.

24
ответ дан 24 November 2019 в 03:21
поделиться

Если я могу процитировать мой ответ на вопрос, который упомянул StompChicken:

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

Поскольку они не понимают язык и не используют словарь терминов, у них нет возможности распознавать и реагировать соответствующим образом на нерегулярные случаи, такие как «run» / «run».

Если вы Если вам нужно обрабатывать нерегулярные случаи, вам нужно будет либо выбрать другой подход, либо дополнить свой ствол своим собственным пользовательским словарем исправлений, чтобы он работал после того, как парашютист сделал свое дело.

1
ответ дан 24 November 2019 в 03:21
поделиться

http://wordnet.princeton.edu/man/morph.3WN

Для многих моих проектов я предпочитаю лемматизатор WordNet, основанный на лексиконе, а не более агрессивному портеру.

http://wordnet.princeton.edu/links#PHP содержит ссылку на PHP-интерфейс с API-интерфейсами WN.

5
ответ дан 24 November 2019 в 03:21
поделиться

Выполните поиск для Lucene, я не уверен, есть ли порт PHP, но я знаю, что Lucene доступен для многих платформ. Lucene - библиотека индексации и поиска OSS (от Apache). Естественно, это и дополнения сообщества могут иметь что-то интересное, чтобы посмотреть. По крайней мере, вы можете узнать, как это делается на одном языке, чтобы вы могли перевести «идею» на PHP

Lucene - библиотека индексации и поиска OSS (от Apache). Естественно, это и дополнения сообщества могут иметь что-то интересное, чтобы посмотреть. По крайней мере, вы можете узнать, как это делается на одном языке, чтобы вы могли перевести «идею» на PHP

Lucene - библиотека индексации и поиска OSS (от Apache). Естественно, это и дополнения сообщества могут иметь что-то интересное, чтобы посмотреть. По крайней мере, вы можете узнать, как это делается на одном языке, чтобы вы могли перевести «идею» на PHP

1
ответ дан 24 November 2019 в 03:21
поделиться

If you know Python, The Natural Language Toolkit (NLTK) has a very powerful lemmatizer that makes use of WordNet.

Note that if you are using this lemmatizer for the first time, you must download the corpus prior to using it. This can be done by:

>>> import nltk
>>> nltk.download('wordnet')

You only have to do this once. Assuming that you have now downloaded the corpus, it works like this:

>>> from nltk.stem.wordnet import WordNetLemmatizer
>>> lmtzr = WordNetLemmatizer()
>>> lmtzr.lemmatize('cars')
'car'
>>> lmtzr.lemmatize('feet')
'foot'
>>> lmtzr.lemmatize('people')
'people'
>>> lmtzr.lemmatize('fantasized','v')
'fantasize'

There are other lemmatizers in the nltk.stem module, but I haven't tried them myself.

142
ответ дан 24 November 2019 в 03:21
поделиться

.Net lucene has an inbuilt porter stemmer. You can try that. But note that porter stemming does not consider word context when deriving the lemma. (Go through the algorithm and its implementation and you will see how it works)

0
ответ дан 24 November 2019 в 03:21
поделиться
Другие вопросы по тегам:

Похожие вопросы: