Лингвофорум

Теоретический раздел => Прикладная лингвистика => Компьютерная лингвистика => Тема начата: Phoenix от февраля 25, 2010, 18:29

Название: Определение части речи
Отправлено: Phoenix от февраля 25, 2010, 18:29
Здравствуйте. Задача достаточно специфическая. Я программист, и ищу совета у вас.

Я хочу программным путем сделать алгоритм определения части речи заданного слова. Возможно кто сталкивался или знает нюансы по которым можно это определение как можно точнее.

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

Точное определение части речи не столь важно, мне главное разграничить слова по важности (т.е. существительное, глагол, прилагательное и т.п.)
Название: Определение части речи
Отправлено: Евгений от февраля 25, 2010, 18:36
Слово должно быть задано только в начальной форме или в любой?
Название: Определение части речи
Отправлено: Phoenix от февраля 25, 2010, 18:40
Цитата: Евгений от февраля 25, 2010, 18:36
Слово должно быть задано только в начальной форме или в любой?

В любой, если будет решение для начальной, то тоже подойдет (как часть алгоритма). У меня в планах разбор предложений, книг и т.п.
Название: Определение части речи
Отправлено: arseniiv от февраля 25, 2010, 18:47
Цитата: Phoenix от февраля 25, 2010, 18:29
Точное определение части речи не столь важно, мне главное разграничить слова по важности (т.е. существительное, глагол, прилагательное и т.п.)
Даже тут уже плохо: кровать, магний... :what:

Цитата: Phoenix от февраля 25, 2010, 18:40
У меня в планах разбор предложений, книг и т.п.
Удачи вам и целеустремлённости!
Кстати, разбор на что-то типа ключевых слов или какой?

Если разные формы, то вот ещё: зеваю — караваю. Вроде, до сих пор был один выход: словарь. Но вам тогда нужен будет словарь с кучей форм. Или попробовать по одной форме искать в словаре все возможные остальные (а словарь с начальными формами). (Например, встретилось слово пароходом. Программа знает, что такой конец может быть как у типичных существительных (при том есть ещё слова в начальной форме — дом), так и прилагательных (розовом). Если слово не нашлось (а это не начальная форма) рограмма начинает перебирать, всё, что могло бы быть:
1. (сущ. в косв. падеже, в начальную форму его) пароход. Ура, нашли.
2. (сущ. в им. падеже) раз не найдено, значит, такого нету!
3. (прилаг. в косв. падеже, в н.ф.) *пароходый, *пароходий, *пароходой. Айяяй, не нашли.
4. (на худой конец откидывать будем буквы с конца) *пароходо, пароход. Но мы его нашли уже в первом варианте, сюда никогда не попадём здесь.
Способ 4 должен быть последним! Иначе дам превратится в да.
Если ничего вообще не нашлось (что маловероятно при наличии кучи служебных частей речи на разные буквы), оставим слово как есть и пометим непонятным.
Предупрежу ещё, что понять, где паро́́м, а где па́́ром, программа вряд ли сможет.) И тут придётся добавить мини-словарь, связывающий "совсем разные" формы: он — его — им — ... И т.д. с модификациями. (Мне кажется, сейчас вроде обычно так делают.)
Название: Определение части речи
Отправлено: Phoenix от февраля 25, 2010, 18:59
Цитата: arseniiv от февраля 25, 2010, 18:47
Если разные формы, то вот ещё: зеваю — караваю. Вроде, до сих пор был один выход: словарь. Но вам тогда нужен будет словарь с кучей форм. Или попробовать по одной форме искать в словаре все возможные остальные. И тут придётся добавить мини-словарь, связывающий "совсем разные" формы: он — его — им — ... И т.д. с модификациями. (Мне кажется, сейчас вроде обычно так делают.)
О словарях я что то не подумал. Там по идее большая часть слов "распознана" может кому известны их системы распознавания? (т.к. все слова перебором не впишешь). Возможно есть свободные словари? с открытой базой слов...

Цитата: arseniiv от февраля 25, 2010, 18:47
Кстати, разбор на что-то типа ключевых слов или какой?
Я потом буду строить дерево зависимости от главных (слов) к зависимым (словам). Тем самым получая вложенную структуру, которая со временем будет описывать объект (главное слово) в полном объеме его возможных зависимостей.
Название: Определение части речи
Отправлено: Евгений от февраля 25, 2010, 19:04
Все морфологические анализаторы русского языка пользуются электрифицированным «Грамматическим словарём» А. А. Зализняка. Но такого морфологического анализатора, чтобы определял формы с нормальным КПД, не существует. Посмотрите на выдачу «с неснятой омонимией» в НКРЯ.
Название: Определение части речи
Отправлено: Phoenix от февраля 28, 2010, 11:11
С частями речи немного разобрался. Теперь связи в предложениях...

Например:
На дереве растут листья
Листья с дерева
Дерево в листьях

Как я понял предлоги определяют принадлежность. Или еще есть способы определить? т.е. я пока думаю сделать анализ предлогов, что бы определить принадлежность одних существительных к другим.
Название: Определение части речи
Отправлено: arseniiv от февраля 28, 2010, 12:26
У нас очень омонимичные предлоги. Нужно значения слов учитывать.
Название: Определение части речи
Отправлено: Asteroth от сентября 19, 2012, 21:55
Цитата: Phoenix от февраля 25, 2010, 18:29
Здравствуйте. Задача достаточно специфическая. Я программист, и ищу совета у вас.

Я хочу программным путем сделать алгоритм определения части речи заданного слова. Возможно кто сталкивался или знает нюансы по которым можно это определение как можно точнее.

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

Точное определение части речи не столь важно, мне главное разграничить слова по важности (т.е. существительное, глагол, прилагательное и т.п.)

Здравствуйте! Я сейчас тоже занимаюсь написанием скрипта для определения части речи... но скрипт сейчас определяет не все слова, и иногда ошибается.
А как у Вас с этим? Может поделитесь идеей?
Спасибо!
Название: Определение части речи
Отправлено: beaver от марта 5, 2013, 23:38
Задача называется part of speech tagging, она хорошо известна... Погуглите, там много найдётся.

Часто используюся статистические методы...

Например: берётся размеченный корпус, где каждому слову приписан тэг - его часть речи... И рассчитывается вероятность для каждого триграма по тегу q(t_n-2, t_n-2, t_n) (т.е. вероятность, сочетаний типа "глагол, глагол, глагол", "глагол, глагол, существительное", "глагол, прилагательное, глагол"... и так со всеми тегами) и вероятность e(w, t), что у конкретного слова w будет тег t.

Но сразу проблема: где взять тренировочный корпус для русского? :( В качестве корпуса можно взять http://opencorpora.org/?page=downloads, там есть части речи, но он очень маленький...
Название: Определение части речи
Отправлено: gasyoun от сентября 24, 2013, 09:55
Цитата: beaver от марта  5, 2013, 23:38В качестве корпуса можно взять http://opencorpora.org/?page=downloads, там есть части речи, но он очень маленький...

А большой это сколько? :)