hatbot-team / hatbot

MIT License
6 stars 0 forks source link

Попытки объяснять прилагательные #1

Closed pershik closed 10 years ago

pershik commented 10 years ago

Что-то не так с explanator'ом. Например, он предлагает такое объяснение "пропуск реки , кисельные берега" Его вариант ответа - молочный.

AlexeyZhuravlev commented 10 years ago

Проблемма чисто морфологическая. У слова "молочные" из изначального фразеологизма есть 2 начальные формы: молочный - прилагательное, молочная - существительное (видимо, подразумевается молочная лавка или что-то подобное). С другой стороны странно, что предлагаемый вариант ответа - 'молочный', а не 'молочная'...

pershik commented 10 years ago

Мне кажется, лучше запретить использовать слова, для которых нельзя однозначно указать часть речи

Oktosha commented 10 years ago

Насколько я помню, Фёдор добавлял функцию постановки слова в начальную форму, всё-таки с нормальными словами «мама мыла раму» предполагается, что правильный ответ — «рама» а не «раму». Ну вот «молочная» и превратилось в «молочный», видимо, это более распространённый вариант начальной формы.

moskupols commented 10 years ago

@pershik А как же классные объяснения вроде "пропуск замуж невтерпёж"?

На самом деле, анализатор даёт ещё процент уверенности для каждого варианта распознавания слова. Можно, видимо, сделать отсечку по этому проценту

moskupols commented 10 years ago

@Oktosha не, проблема в том, что это вряд ли существительное

moskupols commented 10 years ago

Впрочем, вот вывод анализатора:

>>> m.parse('молочные')
[Parse(word='молочные', tag=OpencorporaTag('ADJF,Qual plur,nomn'), normal_form='молочный', score=0.25, methods_stack=((<DictionaryAnalyzer>, 'молочные', 10, 20),)),
 Parse(word='молочные', tag=OpencorporaTag('ADJF,Qual inan,plur,accs'), normal_form='молочный', score=0.25, methods_stack=((<DictionaryAnalyzer>, 'молочные', 10, 24),)),
 Parse(word='молочные', tag=OpencorporaTag('NOUN,inan,femn plur,nomn'), normal_form='молочная', score=0.25, methods_stack=((<DictionaryAnalyzer>, 'молочные', 115, 7),)),
 Parse(word='молочные', tag=OpencorporaTag('NOUN,inan,femn plur,accs'), normal_form='молочная', score=0.25, methods_stack=((<DictionaryAnalyzer>, 'молочные', 115, 10),))]

Он одинаково уверен в двух вариантах прилагательного и двух существительного. Видимо, это что-то вроде булочной? Тогда это редкая проблема.

AlexeyZhuravlev commented 10 years ago
>>> from explanator import explain
Antonyms dictionary doesn't exist
>>> explain('молочная')
*пропуск* реки , кисельные берега
>>> explain('молочный')
(Ничего не возвращает)

>>> from explanator import get_explainable_words
>>> list = get_explainable_words()
>>> 'молочный' in list
False
>>> 'молочная' in list
True

Ну никак не мог он пытаться объяснить молочный

moskupols commented 10 years ago

Короче, "молочная" — это действительно не вполне очевидное существительное. Именно эта проблема решится, видимо, если дать возможность пользователю говорить, что слово/объяснение плохое. (Дмитрий:) Да и так рейтинг у этого объяснения будет невысокий.

pershik commented 10 years ago

@moskupols рейтинг же не важен. при отсутствии других объяснений он будет пытаться объяснить хоть как-то

moskupols commented 10 years ago

@pershik ну, запишем слово в сложные. оно корректно: http://www.morfologija.ru/%D1%81%D0%BB%D0%BE%D0%B2%D0%BE%D1%84%D0%BE%D1%80%D0%BC%D0%B0/%D0%BC%D0%BE%D0%BB%D0%BE%D1%87%D0%BD%D0%B0%D1%8F, http://dic.academic.ru/searchall.php?SWord=%D0%BC%D0%BE%D0%BB%D0%BE%D1%87%D0%BD%D0%B0%D1%8F&stype=0