badlittleduck
@badlittleduck
UX/UI дизайнер. Основатель и руководитель 1Point

Библиотека для морфологического разбора фраз на русском языке?

Какой библиотекой можно сделать морфологический разбор фраз на русском языке?

Нужно, что-нибудь, что можно использовать на php.



Подробнее. На входе два списка фраз — основной и расширенный. Надо каждой фразе из основного списка сопоставить все возможные фразы из расширенного списка с учетом морфологии русского языка.



Например, основной список (одномерный массив):

1. купить медицинские весы

2. ортопедический матрас



Расширенный список (одномерный массив):

1. купить медицинские весы в москве

2. купить медицинские весы в перми

3. покупка медицинских весов

4. продажа весов медицинских

5. медицинские весы купить

6. ортопедические матрасы

7. матрас ортопедическй

8. продажа матрасов ортопедических

9. матрас полуторный



На выходе надо понять, какие из фраз расширенного списка включают в себя какую-нибудь фразу из основного списка. Чтобы в итоге получить следующий список (двумерный массив):



1. купить медицинские весы:

1.1. купить медицинские весы в москве

1.2. купить медицинские весы в перми

1.3. покупка медицинских весов



2. ортопедический матрас:

2.1. ортопедические матрасы

2.2. матрас ортопедическй

2.3. продажа матрасов ортопедических



Понимаю, что в результате морфолог. анализа фраз возможный ошибки и не все варианты фраз будут связаны. Даже готов смириться с такой ошибки, когда будут связаны фразы «китобойный промысел» и «китайская промышленность».
  • Вопрос задан
  • 7903 просмотра
Пригласить эксперта
Ответы на вопрос 4
xmoonlight
@xmoonlight
https://sitecoder.blogspot.com
Смотрите функцию similar_text():
$sovpalo=similar_text($stroka1,$stroka2,$prc);
Возвращаемое значение: — кол-во совпавших символов.
Проверка:
if ($prc>10 && $sovpalo>=mb_strlen($stroka1)/2) { /* (если процент совпадения больше 10 и кол-во совпавших символов больше половины) помещаем в подпункт... */ }
Ответ написан
dustalov
@dustalov
Для лемматизации и склонения слов есть phpmorphy. Вероятно, работу с фразами придётся делать самому.
Ответ написан
@leotop

В узкой тематике эффективно использование конечных автоматов.

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

В итоге получается достаточно медленно на выборках более 50 фраз.

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

Ответ написан
Комментировать
tarasnick1
@tarasnick1
SEO оптимизатор
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

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