|
Начальная форма слова
|
|||
---|---|---|---|
#18+
Задача: привести слово русского языка к начальной форме. Я так понимаю, без словаря здесь не обойтись, в общем случае. Словарь нужен оффлайн. беглый поиск результатов не дал. т.е нужна минимальная структура таблицы: любая форманачальная формавеснавеснавеснувесна веснойвеснавёснывесна...бегатьбегатьбегубегатьбежалбегатьбегибегать... Если у кого есть, поделитесь. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.12.2021, 16:15 |
|
Начальная форма слова
|
|||
---|---|---|---|
#18+
Эта типовая задача называется "stemming" - погугли просто готовые реализации для русского языка. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.12.2021, 17:43 |
|
Начальная форма слова
|
|||
---|---|---|---|
#18+
fkthat, спасибо за расширение кругозора термином "stemming", но, видимо, я гуглить не умею. где скачать словарь так и не нашёл ... |
|||
:
Нравится:
Не нравится:
|
|||
11.12.2021, 18:20 |
|
Начальная форма слова
|
|||
---|---|---|---|
#18+
Стемминг не содержит словарей. Это - больше алгоритм чем данные. По крайней мере для русского языка. Украинско-польские стеммеры содержат в сорцах некоторые справочники. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.12.2021, 18:24 |
|
Начальная форма слова
|
|||
---|---|---|---|
#18+
mayton, ну не знаю, как без словарей обойтись к примеру, встречаем в тексте слово "шей" каким алгоритмом можно дойти до двух начальных слов: 1.шить 2.шея ... |
|||
:
Нравится:
Не нравится:
|
|||
11.12.2021, 18:33 |
|
Начальная форма слова
|
|||
---|---|---|---|
#18+
_avz, Вообщем правельно думаете. Но все же погуглите что б не изобретать велосипед ... |
|||
:
Нравится:
Не нравится:
|
|||
11.12.2021, 19:06 |
|
Начальная форма слова
|
|||
---|---|---|---|
#18+
uProger, гуглил, полезного не нагуглил. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.12.2021, 19:10 |
|
Начальная форма слова
|
|||
---|---|---|---|
#18+
_avz uProger, гуглил, полезного не нагуглил. Можешь здесь, например, покопаться: https://snowballstem.org/ Или поковырять как это сделано в Lucene: https://lucene.apache.org/ ... |
|||
:
Нравится:
Не нравится:
|
|||
11.12.2021, 21:30 |
|
Начальная форма слова
|
|||
---|---|---|---|
#18+
fkthat Эта типовая задача называется "stemming" Проблема стеммеров в том, что они не приводят к словарной форме (лемме), а выделяют псевдооснову, от которой нужно стоить лемму по правилам. Для всех словоформ вроде «весной», «весне» и т.п. стеммер выдаст «весн», для «бегут», «беги» — «бег» (а лемма-то будет «бежать», а не «бегать», как ТС считает). ... |
|||
:
Нравится:
Не нравится:
|
|||
11.12.2021, 23:31 |
|
Начальная форма слова
|
|||
---|---|---|---|
#18+
Вспомнил: hunspell умеет лемматизировать (качество давно не проверял), русских словарей для него довольно много. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.12.2021, 00:15 |
|
Начальная форма слова
|
|||
---|---|---|---|
#18+
Ы2 а лемма-то будет «бежать», а не «бегать», как ТС считает. Кстати, почему? ... |
|||
:
Нравится:
Не нравится:
|
|||
12.12.2021, 08:56 |
|
Начальная форма слова
|
|||
---|---|---|---|
#18+
Ы2 Проблема стеммеров в том, что они не приводят к словарной форме (лемме), а выделяют псевдооснову, от которой нужно стоить лемму по правилам. Для всех словоформ вроде «весной», «весне» и т.п. стеммер выдаст «весн», для «бегут», «беги» — «бег» Вот и я считаю: для моей задачи стемминг - как из пушки по воробьям. Намного же проще тупо забить все слова в справочник и не заморачиваться программировать нечёткие правила словообразования. Лежит в базе, удобно и быстро SQL-ем обрабатывать. Неужели ни у кого подобной таблички в базе нет? Она ж и до миллиона не догонит ... |
|||
:
Нравится:
Не нравится:
|
|||
12.12.2021, 09:05 |
|
Начальная форма слова
|
|||
---|---|---|---|
#18+
_avz, похоже, для большинства случаев такая табличка просто не нужна, вот и нет ее. Но если очень надо, генерируется тем же hunspell. Только словарь берите с леммами, а не спевдоосновами, посмотрите, напр., на github у PostgresPro. А за миллион такое выходит очень легко: по 12 форм на каждое существительное, прилагательное, числительное и причастие, по 11 форм на каждый глагол (по 22 с учетом видовых пар), и т.д. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.12.2021, 11:14 |
|
Начальная форма слова
|
|||
---|---|---|---|
#18+
Ы2, спасибо, попробую разобраться ... |
|||
:
Нравится:
Не нравится:
|
|||
12.12.2021, 11:20 |
|
Начальная форма слова
|
|||
---|---|---|---|
#18+
_avz Ы2 Проблема стеммеров в том, что они не приводят к словарной форме (лемме), а выделяют псевдооснову, от которой нужно стоить лемму по правилам. Для всех словоформ вроде «весной», «весне» и т.п. стеммер выдаст «весн», для «бегут», «беги» — «бег» Вот и я считаю: для моей задачи стемминг - как из пушки по воробьям. Намного же проще тупо забить все слова в справочник и не заморачиваться программировать нечёткие правила словообразования. Лежит в базе, удобно и быстро SQL-ем обрабатывать. Неужели ни у кого подобной таблички в базе нет? Она ж и до миллиона не догонит Может быть стемминг тебе и не подходит. По крайней мере стеммер действительно выделяет основу слова а не имя существительное в родительном. Откуда взять такую табличку - ХЗ. Не знаю. Но учитывая комбинаторную сложность самой постановки, я-бы сказал что тебе придется самому ее делать. На основе опять-же имен существительных , глаголов и прочего. Которые тоже надо где-то найти. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.12.2021, 15:24 |
|
Начальная форма слова
|
|||
---|---|---|---|
#18+
mayton, В общем, как я понял, решение только такое: ставится Postgres PRO (пока не разобрался, можно ли поставить его бесплатно) на него расширение hunspell а в нём уже есть функции, чтоб сгенерировать нужную табличку (а можно и без неё обойтись, используя функции расширения) ... |
|||
:
Нравится:
Не нравится:
|
|||
12.12.2021, 15:59 |
|
Начальная форма слова
|
|||
---|---|---|---|
#18+
Судя по сорцам, hunspel написан на C++ ... |
|||
:
Нравится:
Не нравится:
|
|||
12.12.2021, 16:16 |
|
Начальная форма слова
|
|||
---|---|---|---|
#18+
_avz mayton, В общем, как я понял, решение только такое: ставится Postgres PRO (пока не разобрался, можно ли поставить его бесплатно) на него расширение hunspell а в нём уже есть функции, чтоб сгенерировать нужную табличку (а можно и без неё обойтись, используя функции расширения) Ставить PostgresPro не обязательно, у них нужно взять только словарь . У hunspell есть консольный интерфейс, есть libhunspell. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.12.2021, 16:25 |
|
Начальная форма слова
|
|||
---|---|---|---|
#18+
Мдя. Начальная форма слова. И основа. Наверное разные штуки. Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29.
Out: Код: sql 1. 2. 3. 4. 5. 6.
... |
|||
:
Нравится:
Не нравится:
|
|||
13.12.2021, 02:08 |
|
Начальная форма слова
|
|||
---|---|---|---|
#18+
mayton Мдя. Начальная форма слова. И основа. Наверное разные штуки. Я не великий специалист в этом, но возможно ли взять готовый словарь (основы слов), построить по нему отношение "основа" -> "стем основы", а потом исходное слово искать по этому отношению в обратном порядке "слово" -> "стем слова" -> "основа"? Это по всякому будет на порядки компактнее, чем для каждой мыслимой формы слова (а их для одной основы может быть по нескольку десятков) хранить отдельную запись с её основой. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.12.2021, 02:30 |
|
Начальная форма слова
|
|||
---|---|---|---|
#18+
mayton Так говорила в июле 1805 года известная Анна Павловна Шерер, фрейлина и приближенная императрицы Марии Феодоровны, встречая важного и чиновного князя Василия, первого приехавшего на ее вечер. Анна Павловна кашляла несколько дней, у нее был грипп, как она говорила (грипп был тогда новое слово, употреблявшееся только редкими). В записочках, разосланных утром с красным лакеем, было написано без различия во всех: Out: так говор в июл 1805 год известн ан павловн шерер фрейлин и приближен императриц мар феодоровн встреч важн и чиновного княз васил перв приеха на е вечер ан павловн кашляла нескольк дне у не был грипп как он говор грипп был тогд новое слов употребля тольк редк в записочк разосла утр с красн лаке был написа без различ во всех Основы, конечно же, совсем не то что надо, но даже они не все были выделены адекватно ... |
|||
:
Нравится:
Не нравится:
|
|||
13.12.2021, 07:06 |
|
Начальная форма слова
|
|||
---|---|---|---|
#18+
fkthat mayton Мдя. Начальная форма слова. И основа. Наверное разные штуки. Я не великий специалист в этом, но возможно ли взять готовый словарь (основы слов), построить по нему отношение "основа" -> "стем основы", а потом исходное слово искать по этому отношению в обратном порядке "слово" -> "стем слова" -> "основа"? Это по всякому будет на порядки компактнее, чем для каждой мыслимой формы слова (а их для одной основы может быть по нескольку десятков) хранить отдельную запись с её основой. увы возьмём исходное слово "душили" стем = "душ" по нему находим 3 основы "душ", "душа", "душить" какую брать? ... |
|||
:
Нравится:
Не нравится:
|
|||
13.12.2021, 07:14 |
|
Начальная форма слова
|
|||
---|---|---|---|
#18+
mayton, почему плохо, я уже написал тут 22408420 . Стемминг придуман для решения инженерной задачи проверки орфографии и полнотекстового поиска, причем в ситуации, когда пропуск нескольких документов так же некритичен, как и включение в поисковую выдачу пары лишних. С лингвистической точки зрения стемминг плох практически для всех языков, даже для английского; для венгерского или тюркских — еще более-менее. fkthat…возможно ли взять готовый словарь (основы слов), построить по нему отношение "основа" -> "стем основы", а потом исходное слово искать по этому отношению в обратном порядке "слово" -> "стем слова" -> "основа"? Можно. Словарь для hunspell от PostgresPro делает все это за исключением выбора правильной леммы (словарной формы) в случае таких форм, как «души» (мн. ч. от «душа» или повел. накл. от «душить»?). ... |
|||
:
Нравится:
Не нравится:
|
|||
13.12.2021, 09:21 |
|
|
start [/forum/topic.php?fid=16&fpage=1&tid=1339604]: |
0ms |
get settings: |
24ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
64ms |
get topic data: |
14ms |
get forum data: |
3ms |
get page messages: |
475ms |
get tp. blocked users: |
2ms |
others: | 316ms |
total: | 920ms |
0 / 0 |