Я пытаюсь получить статистику с корпорацией, используя NLTK , я хотел бы знать, как получить список тегов, которые идут рядом с определенным тегом.Например, я хочу получить список тегов после тега DTDEF
Я пытаюсь следовать руководству по https://www.nltk.org/book/ch05.html и настроить его в соответствии со своими потребностями.
Здесь, код хранения в массиве «тегирует» все теги ПОСЛЕ слово 'ny' , или я хотел бы сохранить тег после тега DTDEF ( DTDEF является тэгом слова 'ny').
import nltk
from nltk.corpus.reader import TaggedCorpusReader
reader = TaggedCorpusReader('cookbook', r'.*\.pos')
train_sents=reader.tagged_sents()
for sent in train_sents:
tags = [tag[1] for (word, tag) in nltk.bigrams(sent) if word[0]=='ny']
#0 is for the word and 1 is for the tag, so tag[0] get you the word and
#tag[1] the tag, the same with word[0] and word[1]
fd = nltk.FreqDist(tags)
fd.tabulate()
Чтобы получить желаемый результат, я изменяю код следующим образом:
import nltk
from nltk.corpus.reader import TaggedCorpusReader
reader = TaggedCorpusReader('cookbook', r'.*\.pos')
train_sents=reader.tagged_sents()
for sent in train_sents:
#i change the line here
tags = [tag[1] for (word, tag) in nltk.bigrams(sent) if tag[1]=='DTDEF']
fd = nltk.FreqDist(tags)
fd.tabulate()
Я ожидаю списоктег после тега DTDEF, но вместо этого я получаю все вхождения тега DTDEF.DTDEF 150
Итак, я пытаюсь это сделать, но проблема с питоном заключается в том, что я не могу делать такие вещи:
import nltk
from nltk.corpus.reader import TaggedCorpusReader
reader = TaggedCorpusReader('cookbook', r'.*\.pos')
train_sents=reader.tagged_sents()
tags=[]
count=0
for sent in train_sents:
for (word,tag) in sent:
#if tag is DTDEF i want to get the tag after it
if tag=="DTDEF":
tags[count]=tag[acutalIndex+1]
count+=1
fd = nltk.FreqDist(tags)
fd.tabulate()
Так что это причина моего вопроса.
Заранее благодарю за ответ и совет.