Size: a a a

Natural Language Processing

2017 May 16

🕵

🕵🏻 Макс in Natural Language Processing
Правда пример все равно странности какие-то показывает:

from yargy.pipeline import CustomGrammemesPipeline

# CustomGrammemesPipeline - базовый класс с реализованными методами для поиска
# подходящих статей и замены граммем в найденных словосочетаниях

class CitiesPipeline(CustomGrammemesPipeline):

   # переопределяем назначаемые грамматические признаки
   # в дальнейшем, их можно использовать внутри грамматик парсера
   Grammemes = {
       'Geox/City'
   }

   # статьи нашего газеттира, обратите внимание на то, что
   # все статьи должны быть в начальной форме - например 'нижний_новгород',
   # но не 'нижнего_новгорода'
   Dictionary = {
       'москва',
       'санкт-петербург',
       'ебург',
       'екатеринбург',
       'екб',
       'город_на_нева',
       'нижний_новгород',
   }

from enum import Enum
from yargy.labels import gram
from natasha import Combinator

class MyGrammars(Enum):

   City = [
       {
           'labels': [
               gram('Geox/City'),
           ],
       }
   ]

combinator = Combinator([MyGrammars], pipelines=[
   CitiesPipeline(),
])

text = 'город екатеринбург - литературное название екб'

for grammar, match in combinator.extract(text):
   print(grammar, [token.value for token in match])

Выводит:
MyGrammars.City ['екб']
источник

🕵

🕵🏻 Макс in Natural Language Processing
Почему Екатеринбург не видит?
источник

🕵

🕵🏻 Макс in Natural Language Processing
text = 'город ебург или екб - литературное название екатеринбурга'

Выводит:
MyGrammars.City ['екб']
MyGrammars.City ['екатеринбурга']
источник

🕵

🕵🏻 Макс in Natural Language Processing
Если убрать слово город, то найдет все 3 записи... Почему?
источник

🕵

🕵🏻 Макс in Natural Language Processing
Хмм....
Убрал из словаря:
'город_на_нева',

Заработало... 😳
источник
2017 May 17

🕵

🕵🏻 Макс in Natural Language Processing
Не в курсе?
источник

NT

Nick Turusin in Natural Language Processing
Dima Veselov
1. Попробуй поставить версию из мастер бранча. 2. Для поддержки других языков нужен корпус (для украинского, по моему, есть какой-то) типа opencorpora, с морфологией и всем таким
Ребят, по поводу пункта 2, кто-нибудь знает есть ли подобные корпуса для английского, которые можно было бы в форматы opencorpora перегнать?
источник

DV

Dima Veselov in Natural Language Processing
🕵🏻 Макс
Не в курсе?
Честно говоря - не знаю :)
Заведи issue на гитхабе, если не трудно - постараюсь посмотреть в ближайшее время.
источник

DV

Dima Veselov in Natural Language Processing
Nick Turusin
Ребят, по поводу пункта 2, кто-нибудь знает есть ли подобные корпуса для английского, которые можно было бы в форматы opencorpora перегнать?
В nltk есть POS-теггер, например - http://www.nltk.org/book/ch05.html
Но там нет всякой нужной нам грамматической информации, типа Name или Geox.
источник

DV

Dima Veselov in Natural Language Processing
Только части речи.
источник

NT

Nick Turusin in Natural Language Processing
Ну нужно определить необходимые и достаточные данные
источник

NT

Nick Turusin in Natural Language Processing
и попробовать найти что-нибудь :)
источник

DV

Dima Veselov in Natural Language Processing
Для упоминаний персон нужны граммемы Name, Patr, Surn и (опционально) информация о падежах (в английском они есть?).
Для топонимов нужна граммема Geox + части речи, типа <сущ> + <geox> = юго-запад москвы
Для организаций, по моему, информация о частях речи + ключевые слова, типа OOO или завод такой-то.
источник

DV

Dima Veselov in Natural Language Processing
А, ещё нужна информация о роде (муж. / жен. / ср.), иногда.
источник

DV

Dima Veselov in Natural Language Processing
http://opencorpora.org/dict.php?act=gram - здесь можно посмотреть все доступные
источник
2017 May 19

🕵

🕵🏻 Макс in Natural Language Processing
Mystem отжигает, конечно )))
text='ип русаков юрий александрович'

Лемматизация:
['ипать', ' ', 'русаков', ' ', 'юрий', ' ', 'александрович', '\n']
источник

🕵

🕵🏻 Макс in Natural Language Processing
Не понимаю как можно решать такие штуки.
источник

|

||||| in Natural Language Processing
Привет. Можно ли в грамматиках yargy ограничить длину токена? Нужно вытаскивать сущность, если встречается определённое число идущих подряд чисел.
источник

DV

Dima Veselov in Natural Language Processing
Привет. Для проверки длины строк есть встроенный лейбл: https://github.com/bureaucratic-labs/yargy/blob/master/yargy/labels.py#L86
Можно написать такой же, но для чисел (у них token.forms[0]['normal_form'] - текстовое представление)
источник

DV

Dima Veselov in Natural Language Processing
🕵🏻 Макс
Не понимаю как можно решать такие штуки.
У них была возможность указать свой фикс-лист, как-раз для таких случаев, насколько я знаю.
источник