Как извлечь существительные фразы на датском языке, используя StanfordNLP в python? - PullRequest
0 голосов
/ 14 мая 2019

Я до сих пор использовал библиотеку stanfordnlp в python, и я токенизировал и POS помечал текстовый фрейм данных.Теперь я хотел бы попытаться извлечь существительные фразы.Я пробовал две разные вещи, и у меня проблемы с обоими:

  1. Из того, что я вижу, библиотека python stanfordnlp, кажется, не предлагает NP-чанкинг из коробки,по крайней мере, я не смог найти способ сделать это.Я попытался создать новый фрейм данных всех слов в порядке с их POS-тегами, а затем проверить, повторяются ли существительные.Однако это очень грубо и довольно сложно для меня.

  2. Я смог сделать это с английским текстом, используя nltk, поэтому я также попытался использовать Stanford CoreNLP API в NLTK.Моя проблема в этом отношении заключается в том, что мне нужна датская модель при настройке CoreNLP с Maven (с которой я очень неопытен).Для задачи 1 этого текста я использовал датскую модель , найденную здесь .Похоже, это не та модель, которую меня просят найти - опять же, я не совсем понимаю, что я делаю, поэтому извиняюсь, если что-то здесь неправильно понимаю.

Мои вопросы тогда: (1) возможно ли на самом деле делать разбиение NPs в stanfordnlp в python, (2) могу ли я как-то проанализировать POS-тегированные + маркированные + лемматизированные слова из stanfordnlp в NLTK и выполнить там чанкинг,или (3) возможно ли настроить CoreNLP на датском языке, а затем использовать API-интерфейс CoreNLP с NLTK.

Спасибо, и приношу извинения за отсутствие ясности.

Ответы [ 2 ]

0 голосов
/ 15 мая 2019

Немного полезной информации:

1.) Насколько мне известно, в Stanford CoreNLP (Java) нет поддержки датского языка.У нас нет поддержки со стороны Дании, и я не знаю ни одной третьей стороны, у которой есть модели для датского языка.Так что ни Java-код, ни сервер не окажут особой помощи.Хотя, возможно, у кого-то есть датские модели.Я попытаюсь исследовать Google немного подробнее.

2.) У нас есть датская поддержка токенизации, части речи, анализа леммы и зависимостей для кодовой базы StanfordNLP (Python).В настоящее время у нас нет какой-либо существительной фразы, идентифицирующей программное обеспечение.Мы не производим синтаксический анализ, поэтому мы не можем просто найти NP в дереве синтаксического анализа, это анализ зависимостей.Я бы предположил, что есть приличные методы для извлечения имен существительных, основанных на разборе зависимостей или на основе фрагментированной части речи.Мы можем работать над добавлением некоторых функций, чтобы помочь с этим.Хотя такая техника не может быть идеальной для начала.Но дух UD 2.0 состоит в том, чтобы обрабатывать все языки, поэтому кажется, что это идеальный случай для написания общих правил извлечения именных фраз для синтаксических анализаторов UD 2.0, которые затем будут работать на всех более чем 70 языках, которые мы поддерживаем в пакете Python.

0 голосов
/ 15 мая 2019

Способ извлечения фрагментов из CoreNLP заключается в использовании вывода constituency parser. Насколько я знаю, в CoreNLP нет метода, который мог бы напрямую предоставить вам список чанков, однако вы можете анализировать выходные данные синтаксического анализатора группы участников, фактическую строку и составлять список чанков в зависимости от ваших потребностей. Например, для входного предложения типа "I bought the book because I read good reviews about it." вывод вашего метода будет выглядеть примерно так:

<class 'list'>: 
[['NP', 'I'], 
['NP', 'the book'], 
['NP', 'I'], 
['NP', 'good reviews'],
['NP', 'it'], 
['SBAR', 'because I read good reviews about it'], 
['VP', 'bought the book because I read good reviews about it'], 
['VP', 'read good reviews about it']]

Вывод выше получен из метода, который я сам написал, я перечислил здесь только NP, VP и SBAR, но пока не опубликовал метод, так как мне нужно дополнительно протестировать и отладить его.

И, если вам нужны только существительные фразы, вы также можете взглянуть на Spacy и решение здесь , которое довольно быстрое. Все, что я упомянул, в основном касается вашего первого вопроса и частично вашего второго вопроса, и я не знаю, применимы ли эти решения также к датскому языку или нет.

...