Главное меню
Мы солидарны с Украиной. Узнайте здесь, как можно поддержать Украину.

Определение части речи

Автор Phoenix, февраля 25, 2010, 18:29

0 Пользователи и 1 гость просматривают эту тему.

Phoenix

Здравствуйте. Задача достаточно специфическая. Я программист, и ищу совета у вас.

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

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

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

Евгений

Слово должно быть задано только в начальной форме или в любой?
PAXVOBISCVM

Phoenix

Цитата: Евгений от февраля 25, 2010, 18:36
Слово должно быть задано только в начальной форме или в любой?

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

arseniiv

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

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

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

Phoenix

Цитата: arseniiv от февраля 25, 2010, 18:47
Если разные формы, то вот ещё: зеваю — караваю. Вроде, до сих пор был один выход: словарь. Но вам тогда нужен будет словарь с кучей форм. Или попробовать по одной форме искать в словаре все возможные остальные. И тут придётся добавить мини-словарь, связывающий "совсем разные" формы: он — его — им — ... И т.д. с модификациями. (Мне кажется, сейчас вроде обычно так делают.)
О словарях я что то не подумал. Там по идее большая часть слов "распознана" может кому известны их системы распознавания? (т.к. все слова перебором не впишешь). Возможно есть свободные словари? с открытой базой слов...

Цитата: arseniiv от февраля 25, 2010, 18:47
Кстати, разбор на что-то типа ключевых слов или какой?
Я потом буду строить дерево зависимости от главных (слов) к зависимым (словам). Тем самым получая вложенную структуру, которая со временем будет описывать объект (главное слово) в полном объеме его возможных зависимостей.

Евгений

Все морфологические анализаторы русского языка пользуются электрифицированным «Грамматическим словарём» А. А. Зализняка. Но такого морфологического анализатора, чтобы определял формы с нормальным КПД, не существует. Посмотрите на выдачу «с неснятой омонимией» в НКРЯ.
PAXVOBISCVM

Phoenix

С частями речи немного разобрался. Теперь связи в предложениях...

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

Как я понял предлоги определяют принадлежность. Или еще есть способы определить? т.е. я пока думаю сделать анализ предлогов, что бы определить принадлежность одних существительных к другим.

arseniiv

У нас очень омонимичные предлоги. Нужно значения слов учитывать.

Asteroth

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

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

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

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

Здравствуйте! Я сейчас тоже занимаюсь написанием скрипта для определения части речи... но скрипт сейчас определяет не все слова, и иногда ошибается.
А как у Вас с этим? Может поделитесь идеей?
Спасибо!

beaver

Задача называется part of speech tagging, она хорошо известна... Погуглите, там много найдётся.

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

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

Но сразу проблема: где взять тренировочный корпус для русского? :( В качестве корпуса можно взять http://opencorpora.org/?page=downloads, там есть части речи, но он очень маленький...
Вы можете купить шубу в натуральном цвете, который варьируется от черного до темно-коричневого, от палевого до золотистого. А, возможно, вы предпочтете шубку в цветном варианте: жемчужном, кофейном, сером или даже красном или ярко-синем. На каком бы фасоне и оттенке вы не остановились, можете не сомневаться: бобёр – отличный выбор.

gasyoun

Цитата: beaver от марта  5, 2013, 23:38В качестве корпуса можно взять http://opencorpora.org/?page=downloads, там есть части речи, но он очень маленький...

А большой это сколько? :)
http://groups.google.com/group/Nagari/ & http://nagari.southindia.ru
Словари санскрита, прописи дэванагари, материалы по авестийскому, хинди

Быстрый ответ

Обратите внимание: данное сообщение не будет отображаться, пока модератор не одобрит его.

Имя:
Имейл:
Проверка:
Оставьте это поле пустым:
Наберите символы, которые изображены на картинке
Прослушать / Запросить другое изображение

Наберите символы, которые изображены на картинке:

√36:
ALT+S — отправить
ALT+P — предварительный просмотр