NLTK POS标签提取,尝试过密钥,值,但还没有

时间:2016-05-15 05:02:39

标签: python pandas tuples nltk

我有一个名单列表,我正在使用NLTK到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一样混乱。

1 个答案:

答案 0 :(得分:0)

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=" ")