Нормализация падежа/склонения/числа/времени и т.д.
http://github.com/bachan/libturglem
а насколько хочется многоязычный?
у пианиста и бачана был лемматизатор, вот: а насколько хочется многоязычный?
а насколько хочется многоязычный?пока что надо английски/русский/белорусский/хохляцкий/казахский и скоро потребуется китайский, но там я вообще хз как всё устроено.
Для того, чтобы опечатки в окончании исправлялись правильно: крушк->кружкаа с чего это он узнает, что надо кружка, а не кружку, кружке, кружки и т.п.?
http://ru.wiktionary.org/wiki/%D0%9F%D1%80%D0%B8%D0%BB%D0%BE...
http://school-assistant.ru/?predmet=russian&theme=sklone...
http://bugaga.net.ru/ege/rus/theory/?n=4
по правилом русское языкам, вестимовидимо по этой фразе предполагается проверять лемматизатор
"мгу", кстати, по правилам русского языка надо лемматизировать к "мга"
(ищется известный токен, ближайший по расстоянию редактирования)имхо проще будет тут что-то по хачить, например, выбирать не просто расстояние левенштейна, а выбирать вариант лучший по языковой модели http://en.wikipedia.org/wiki/Language_model
языковую модель можно построить по какому-нибудь корпусу. википедию, например, скачать, или сайты твоей предметной области, или придумать самому откуда взять запросов/текстов по твоей тематике.
нормальный лемматизатор будет использовать сложнее и для каждого языка скорее всего будет свой, если и будет.
"мгу", кстати, по правилам русского языка надо лемматизировать к "мга""Минет" — "минуть".
Например, определение корня слова "вынуть."
Да и то же "кружку" тоже непонятно, как обрабатывать.
---
...Я работаю антинаучным аферистом...
Может быть, при индексации "раскрывать" слово на множество термов? Но тогда будет пухнуть индекс.
> из именительного в другие падежи, а обратных я ещё не нашёл.
Я бы не удивлялся. Пример словоформы "кружку" очень хороший, кстати:
хорошо видно, какие возникают сложности при определении именительного падежа.
---
...Я работаю антинаучным аферистом...
$ echo вынуть кружку | ./mystem -nie utf-8
вынуть{вынимать=V,пе=инф,сов}
кружку{кружка=S,жен,неод=вин,ед|кружок=S,муж,неод=дат,ед}
2. Про "вынуть" задавался вопрос о корне слова, а не о неопределённой форме.
Хотя, да, за то, что смогло определить именительный падеж --- зачёт.
---
"Прогресс науки обратно пропорционален числу выходящих журналов."
echo "ип" | ./mystem -nie utf-8
ип{ипать=V,разг,обсц,несов=прош,ед,изъяв,муж}
И если не распознавать отделительный падеж, то простое
"Налей чайку зелёного, налей..." (Визбор, "Октябрь, Садовое кольцо")
и "Налей вина зелёного, налей..." (у Визбора --- "Налей винца зелёного...")
считаются неверными, а при попытке поправить превращаются в сюрреализм.
Причём для этого не нужно каких-то жаргонных слов и иноязычных заимствований.
---
"Французский знаете.
Делите.
Множите.
Склоняете чудно."
скоро потребуется китайскийМогу утешить: в китайском нет морфологии.
И огорчить: мучений с токенизацией хватит за глаза
ип{ипать=VВот честно, когда добавлял в словарь - проверил, находилась именно такая форма, и именно в таком значении. Теперь бедные Индивидуальные Предприниматели страдают...
А с Гюльчатай прокол вышел, да.
1. Местный падеж не осилило.Где ты у "кружку" местный падеж нашёл?
На вот тебе и местный и партиальный:
echo 'чайку в шкафу' | ./mystem -nie utf-8
чайку{чайка=S,жен,од=вин,ед|чаек=S,муж,неод=дат,ед|=S,муж,неод=парт,ед|чайка=S,фам,муж,од=вин,ед}
в{в=PR=|в=S,сокр=им,ед|=S,сокр=им,мн|=S,сокр=род,ед|=S,сокр=род,мн|=S,сокр=дат,ед|=S,сокр=дат,мн|=S,сокр=вин,ед|=S,сокр=вин,мн|=S,сокр=твор,ед|=S,сокр=твор,мн|=S,сокр=пр,ед|=S,сокр=пр,мн}
шкафу{шкаф=S,муж,неод=дат,ед|=S,муж,неод=местн,ед}
Оставить комментарий
kill-still
Сейчас в качестве фильтра токенов для поисковых запросов использую алгоритм "Snowball". Всё работает замечательно, но при исправлении опечаток в окончании возникают артефакты в видекрушк->кружк. (ищется известный токен, ближайший по расстоянию редактирования) При этом при наличии окончания всё работает хорошо, т.к. я заменяю по вхождению:крушка->кружка,крушкой->кружкой. Посоветуйте мультиязычный алгоритм, который бы не отбрасывал окончания, как снежок, а нормализовывал их (кружкой->кружка). Для того, чтобы опечатки в окончании исправлялись правильно:крушк->кружка