<p>我正在尝试编写代码,该代码传入已标记的文本,并过滤掉停止词,然后对其进行词干和标记。然而,我不确定我应该以什么顺序进行标记。这就是我目前的情况:</p>
<pre><code>#### Stemming
ps = PorterStemmer() # PorterStemmer imported from nltk.stem
stemText = []
for word in swFiltText: # Tagged text w/o stop words
stemText.append(ps.stem(word))
#### POS Tagging
def tagging():
tagTot = []
try:
for i in stemText:
words = nltk.word_tokenize(i) # I need to tokenize again (idk why?)
tagged = nltk.pos_tag(words)
tagTot = tagTot + tagged # Combine tagged words into list
except Exception as e:
print(str(e))
return tagTot
tagText = tagging()
</code></pre>
<p>乍一看,这很管用。然而,因为我是第一个词干,所以<code>pos_tag</code>经常错误地标注单词。例如,它将“hous”标记为形容词,而原来的单词实际上是名词“house”。但是当我尝试在标记后进行词干时,它会给我一个关于<code>pos_tag</code>如何不能处理“元组”的错误——我猜这与词干分析器将单词列表格式化为<code>[('come', 'VB'), ('hous', 'JJ')</code>的方式有关,等等</p>
<p>我是否应该使用不同的词干分析器/标记器?还是我的代码中有错误</p>
<p>提前谢谢</p>