python - 单词列表的词形还原

标签 python nltk lemmatization

所以我在文本文件中有一个单词列表。我想对它们进行词形还原以删除具有相同含义但时态不同的单词。比如尝试、尝试等。当我这样做时,我不断收到类似 TypeError: unhashable type: 'list' 的错误

    results=[]
    with open('/Users/xyz/Documents/something5.txt', 'r') as f:
       for line in f:
          results.append(line.strip().split())

    lemma= WordNetLemmatizer()

    lem=[]

    for r in results:
       lem.append(lemma.lemmatize(r))

    with open("lem.txt","w") as t:
      for item in lem:
        print>>t, item

如何对已经是标记的单词进行词形还原?

最佳答案

WordNetLemmatizer.lemmatize 方法可能需要一个字符串,但您向它传递的是一个字符串列表。这会给您 TypeError 异常。

line.split() 的结果是一个字符串列表,您将其作为列表附加到 results,即列表的列表。

您想使用 results.extend(line.strip().split())

results = []
with open('/Users/xyz/Documents/something5.txt', 'r') as f:
    for line in f:
        results.extend(line.strip().split())

lemma = WordNetLemmatizer()

lem = map(lemma.lemmatize, results)

with open("lem.txt", "w") as t:
    for item in lem:
        print >> t, item

或在没有中间结果列表的情况下重构

def words(fname):
    with open(fname, 'r') as document:
        for line in document:
            for word in line.strip().split():
                yield word

lemma = WordNetLemmatizer()
lem = map(lemma.lemmatize, words('/Users/xyz/Documents/something5.txt'))

关于python - 单词列表的词形还原,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34058853/

相关文章:

python - 为什么我的 Python 版本在 shell 中与从文件中执行不同

python - 使用索引查找带连字符的单词

python - 如何使用 python django 清除浏览器缓存?

python - 属性错误 : module 'cv2.cv2' has no attribute 'bgsegm

python - 如何在 Python 中运行后台计时器

python - 基于 NLTK 的词干提取和词形还原

python - 如何在 NLTK 的 Wordnet 中检索目标同义词集的反义词同义词集?

python - 使用 Python 和 NLTK 绘制 N 个结果

python - 在 Mac OS 10.9 上为 Python 3.4 安装 nltk

Java 词形还原工具