我有一个名单列表,我正在使用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
一样混乱。
答案 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=" ")