2016-03-16 3 views
2

Я занимаюсь обработкой естественного языка.Как я могу пометить немецкие тексты POS?

Для английской маркировки POS это довольно просто, потому что мне нужно использовать только встроенные функции nltk. Я хочу так же обрабатывать немецкие тексты.

Поскольку NLTK не имеет встроенную функцию для немецкого, я попытался с помощью Stanford POSTagger:

from nltk.tag.stanford import StanfordPOSTagger 
import os 
import nltk 
java_path = "C:/Program Files/Java/jdk1.8.0_71/bin/java.exe" 
os.environ['JAVAHOME'] = java_path 
sentence = "Man könnte Klöckner vorhalten, sich an ihre eigenen Appelle nicht zu halten. Doch niemand in der Union wagte das. Nicht einmal die von ihr attackierten Briefschreiber. Klöckner genießt im Moment Narrenfreiheit." 
tokens = nltk.word_tokenize(sentence, 'german') 
german_postagger1 = StanfordPOSTagger(r'E:/python/nlptest/models/german-hgc.tagger', r'E:/python/nlptest/stanford-postagger.jar') 
gp1 = german_postagger1.tag(tokens) 

Он занимает почти 7 секунд, чтобы закончить обработку, которая невыносима для меня.

Я также пробовал модуль Pattern, но он не поддерживает Python 3, и я использую Python 3.4.

Есть ли альтернативный и более быстрый способ тегов немецких предложений POS?

ответ

1

TreeTagger10 является быстродействующим в установке хорошо документированным теггером на основе децигона, поддерживающим многие языки (и да, он построен немецким) и python wrapper.

1

Отказ от ответственности: Shameless плагин

Попробуйте установить полный nltk_cli (https://github.com/alvations/nltk_cli) и использовать эту команду:

[email protected]:~/git/nltk_cli$ echo "Man könnte Klöckner vorhalten, sich an ihre eigenen Appelle nicht zu halten. Doch niemand in der Union wagte das. Nicht einmal die von ihr attackierten Briefschreiber. Klöckner genießt im Moment Narrenfreiheit." > test.in 

[email protected]:~/git/nltk_cli$ python3 stanford.py --tool=postagger \ 
> --jar=$HOME/stanford-postagger/stanford-postagger.jar \ 
> --model=$HOME/stanford-postagger/models/german-fast.tagger \ 
> --input=test.in 

[выход]:

Man#PIS könnte#VMFIN Klöckner#NE vorhalten,#VVFIN sich#PRF an#APPR ihre#PPOSAT eigenen#ADJA Appelle#NN nicht#PTKNEG zu#APPR halten.#ADJA Doch#KON niemand#PIS in#APPR der#ART Union#NN wagte#VVFIN das.#ADV Nicht#PTKNEG einmal#ADV die#ART von#APPR ihr#PPOSAT attackierten#ADJA Briefschreiber.#NN Klöckner#NE genießt#VVFIN im#APPRART Moment#NN Narrenfreiheit.#NE 
+0

Бесстыдный штекер? :) Классный инструмент. – erip

+0

@erip Упс забыл добавить это. Обновленный ответ =) – alvas

0

Быстро на основе правил POS и морфологический теггер RDRPOSTagger поддерживает предварительно подготовленные модели для 13 языков, включая немецкий (как в POS, так и в морфологической маркировке). Он реализован в Python (а также Java).

Например, скорость тегов на английском языке для реализации Python, скорость тегов составляет 8 тыс. Слов в секунду для однопоточной реализации с использованием компьютера с Core2Duo 2,4 ГГц. Вы можете добиться гораздо более быстрой скорости тегов с помощью более мощного компьютера.

Смежные вопросы