2015-10-12 2 views
0

Я новичок в NLTK, и я бы хотел поэкспериментировать с парсером для моего игрушечного проекта.Python NLTK parse tagged text: как получить тег с тегами

Вот код, я использую:

tokens = nltk.regexp_tokenize(test_sentence, ptrn_for_tokenizer, flags = flags) 
tagged_text = regexp_tagger.tag(tokens) 
only_tags = [tag for text, tag in tagged_text] 
grammar = CFG.fromstring(GRAMMAR) 
parser = nltk.ChartParser(grammar, trace=0) 
trees = parser.parse(only_tags) 

Я разметить текст с regexs затем с помощью других регулярных выражений пометить текст и, наконец, я использую парсер, чтобы иметь синтаксических деревьев. Но Parse выполняется только с тегами (only_tags), и я не могу восстановить тег с тегами.

Как это сделать? Это неправильный путь?

+0

mhhh ... нет ответов нет комментариев. Глупый вопрос? – robob

ответ

1

Я понимаю вашу мотивацию в написании грамматики только для тегов POS: в синтаксических анализах, основанных на правилах NLTK, нет места для большого словарного запаса, поскольку они являются инструментами для обучения, которые не предназначены для реального использования. Я не слишком уверен, как выглядят ваши деревья синтаксического анализа, но если теги POS являются листовыми узлами, вы можете отредактировать дерево и отбросить слова обратно.

Сначала я сгенерирую код образца к тому, что ваш синтаксический анализатор может дать вам:

mytree = nltk.Tree.fromstring("(S (DP D (AP A N)) (VP V))") 

Так вот, как поместить слова обратно:

>>> tokens = "the big dog runs".split() 
>>> for n, pos in enumerate(mytree.leaves()): 
     mytree[mytree.leaf_treeposition(n)] = nltk.Tree(pos, [ tokens[n] ]) 
>>> print(mytree) 
(S (DP (D the) (AP (A big) (N dog))) (VP (V runs))) 
+0

благодарит за комментарий. Теперь я перехожу к RegexParser с грамматикой Chunk. Кажется, он менее жесткий, чем синтаксический анализатор CFG, который предлагает NLTK. – robob

+1

Предлагаю вам изучить статистический синтаксический анализ. Рукописные правила не предназначены для серьезного использования, если у вас нет ресурсов для написания тысяч и тысяч. – alexis

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