Python: открыть тег дерева в скрипте

Как я могу использовать treetagger в питон-скрипте?

У меня есть предложение, и treetagger должен проанализировать это. В normal В командной строке я могу сделать следующее:

echo 'This is a test!' | cmd/tree-tagger-english-utf8  

но как я могу сделать это в скрипте Python?

Вывод команды выше выглядит следующим образом:

echo 'This is a test!' | cmd/tree-tagger-english
    reading parameters ...
    tagging ...
     finished.
This    DT  this
is  VBZ be
a   DT  a
test    NN  test
!   SENT    !

В моем сценарии мне нужны теги, т. Е. "DT", "VBZ", "DT", "NN", "SENT", которые я хотел бы сохранить в списке. Эти теги мне понадобятся позже, чтобы вставить их в строку.

Спасибо за любую помощь!:)

2 ответа

Решение

Посмотрите на модуль подпроцесса: простой пример следует...

$ cat test.py 
#!/usr/bin/python
import os
import sys
import subprocess

list_of_lists = []

process = subprocess.Popen(["cmd/tree-tagger-english-utf8"], stdout=subprocess.PIPE)
(output, err) = process.communicate(sys.stdin)
count = 0
for line in output.split('\n'):
    # condition to skip the first 3 lines
    if count<3:
        count=count+1
    else:
        new_list = [elem for elem in line.split()]
        list_of_lists.append(new_list)
exit_code = process.wait()
print list_of_lists
$ 

Вы также можете использовать модуль treetagger-python от miotto, который предоставляет очень простой в использовании интерфейс для TreeTagger.

Просто не забудьте определить новый TREETAGGER переменная окружения, чтобы модуль Python знал, где найти исполняемые файлы TreeTagger. Остальное выглядит примерно так:

>>> from treetagger import TreeTagger
>>> tt_en = TreeTagger(encoding='utf-8', language='english')
>>> from pprint import pprint
>>> pprint(tt_en.tag('Does this thing even work?'))
[[u'Does', u'VBZ', u'do'],
 [u'this', u'DT', u'this'],
 [u'thing', u'NN', u'thing'],
 [u'even', u'RB', u'even'],
 [u'work', u'VB', u'work'],
 [u'?', u'SENT', u'?']]

Вот сообщение в блоге, в котором я подробно описал установку и тестирование, если вам нужны дальнейшие инструкции.

Другие вопросы по тегам