我有一个使用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=" ")