3

我建立了一个明文语料库,下一步是对我所有的文本进行词形还原。我正在使用WordNetLemmatizer并且需要每个标记的pos_tag以免遇到问题,例如爱 -> 引理 = 爱和爱 -> 引理 = 爱...


我认为默认的 WordNetLemmatizer-POS-Tag 是 n (=Noun),但是如何使用 pos_tag?我认为预期的 WordNetLemmatizer-POS-Tag 与我得到的 pos_tag 不同。有什么功能或什么可以帮助我吗?!?!

在这一行中,我认为 word_pos 是错误的,这就是错误原因

引理 = wordnet_lemmatizer.lemmatize(word,word_pos)

import nltk
from nltk.corpus import PlaintextCorpusReader
from nltk import sent_tokenize, word_tokenize, pos_tag
from nltk.stem import WordNetLemmatizer
wordnet_lemmatizer = WordNetLemmatizer()

corpus_root = 'C:\\Users\\myname\\Desktop\\TestCorpus'
lyrics = PlaintextCorpusReader(corpus_root,'.*')

for fileid in lyrics.fileids():
     tokens = word_tokenize(lyrics.raw(fileid))
     tagged_tokens = pos_tag(tokens)
     for tagged_token in tagged_tokens:
         word = tagged_token[0]
         word_pos = tagged_token[1]
         print(tagged_token[0])
         print(tagged_token[1])
         lemma = wordnet_lemmatizer.lemmatize(word,pos=word_pos)
         print(lemma)

附加问题: pos_tag 是否足以用于我的词形还原或需要我另一个标记器?我的文字是歌词...

4

1 回答 1

2

您需要将标签从 pos_tagger 转换为 wordnet 识别的四个“句法类别”之一,然后将其作为 word_pos 传递给词形分析器。

文档

句法类别:n 代表名词文件,v 代表动词文件,a 代表形容词文件,r 代表副词文件。

于 2016-03-08T15:31:03.480 回答