NLTK POS标签提取,已尝试密钥,但值尚未存在



我有一个使用NLTK-to-POS标记的名称列表。我把它和wordsegment一起使用,因为这些名字像thisisme一样杂乱无章。

因此,我已经成功地使用循环对这些名称进行了POS标记,但是,我无法提取POS标记。整个练习都是通过CSV完成的。

这就是我希望CSV在一天结束时的样子。

name,    length, pos
thisisyou 6      NN, ADJ

到目前为止,我的代码是

import pandas as pd
import nltk
import wordsegment
from wordsegment import segment
from nltk import pos_tag, word_tokenize
from nltk.tag.util import str2tuple
def readdata():
    datafileread = pd.read_csv('data.net.lint.csv')
    domain_names = datafileread.DOMAIN[0:5]
    for domain_name in domain_names:
        seg_words = segment(domain_name)
        postagged = nltk.pos_tag(seg_words)
        limit_names = postagged
        for keys,values in postagged:
            print (posttagged)
readdata()

我得到这个结果

NN
NN
ADJ
NN

这看起来还可以,但错了。某些POS标签不应出现在新行上。它应该只是像NNNN一样混乱。

print函数每次使用时都会插入一个换行符。您需要避免这种情况。这样试试:

for domain_name in domain_names:
    seg_words = segment(domain_name)
    postagged = nltk.pos_tag(seg_words)
    tags = ", ".join(t for w, t in postagged)
    print(domain_name, LENGTH, tags)

join()方法将POS标签作为单个字符串返回,用", "分隔。我刚刚写了LENGTH,因为我不知道你的例子中是如何得到6的。填写你的意思。

PS。这里不需要它,但您可以告诉print()不要添加这样的最后一行:print(word, end=" ")

最新更新