我正在使用Python3.5的nltk pos_tag函數和WordNetLemmatizer。我的目標是在我們的數據庫中拼合單詞以分類文本。我正在嘗試使用lemmatizer進行測試,並且在相同的記號上使用POS標記時遇到了奇怪的行爲。在下面的例子中,我有一個三個字符串的列表,當它們在POS標記器中運行時,其他每個元素都作爲名詞(NN)返回,其餘的作爲動詞(VBG)返回。詞性標註後的單詞產生意想不到的結果
這會影響詞形。輸出看起來是這樣的:
pos Of token: v
lemmatized token: skydive
pos Of token: n
lemmatized token: skydiving
pos Of token: v
lemmatized token: skydive
如果我添加更多的元素到相同的字符串列表,這種模式仍然繼續。在全我使用的代碼是這樣的:
tokens = ['skydiving', 'skydiving', 'skydiving']
lmtzr=WordNetLemmatizer()
def get_wordnet_pos(treebank_tag):
if treebank_tag.startswith('J'):
return 'a'
elif treebank_tag.startswith('V'):
return 'v'
elif treebank_tag.startswith('N'):
return 'n'
elif treebank_tag.startswith('R'):
return 'r'
elif treebank_tag.startswith('S'):
return ''
else:
return ''
numTokens = (len(tokens))
for i in range(0,numTokens):
tokens[i]=tokens[i].replace(" ","")
noSpaceTokens = pos_tag(tokens)
for token in noSpaceTokens:
tokenStr = str(token[1])
noWhiteSpace = token[0].replace(" ", "")
preLemmed = get_wordnet_pos(tokenStr)
print("pos Of token: " + preLemmed)
lemmed = lmtzr.lemmatize(noWhiteSpace,preLemmed)
print("lemmatized token: " + lemmed)
是的,我擔心缺乏背景是問題所在。我想我試圖潛入nltk沒有適當的背景。現在從第一章開始寫這本書。必須找到另一種方法來嘗試解決這個問題。 – kinghenry14