【问题标题】:Python Stemming words in a File文件中的 Python 词干提取
【发布时间】:2013-05-25 23:33:25
【问题描述】:

我想在文件中进行词干提取。当我在终端中使用它时,它可以正常工作,但是当我将它应用到文本文件中时,它就不起作用了。 终端代码:

print PorterStemmer().stem_word('complications')

功能代码:

def stemming_text_1():
    with open('test.txt', 'r') as f:
        text = f.read()
        print text
        singles = []    

        stemmer = PorterStemmer() #problem from HERE
        for plural in text:
            singles.append(stemmer.stem(plural))
        print singles

输入 test.txt

126211 crashes bookmarks runs error logged debug core bookmarks
126262 manual change crashes bookmarks propagated ion view bookmarks

期望/预期输出

126211 crash bookmark runs error logged debug core bookmark
126262 manual change crash bookmark propagated ion view bookmark

任何建议将不胜感激,谢谢:)

【问题讨论】:

  • @njzk2 如果我这样做 PorterStemmer().stem_word('bookmarks') 我会得到书签,但是当我从 test.txt 文件中读取时,输出不会改变,它仍然是书签。我假设问题出在循环上。谢谢。
  • 我编辑了你的问题,请验证
  • stem 应该和 stem_word 做同样的事情吗?
  • @njzk2 是的,stem.porter 或 stem.wordnet 都可以应用。

标签: python nltk stemming


【解决方案1】:

您需要将文本拆分为单词,以便词干分析器工作。目前,变量text 包含整个文件作为一个大字符串。循环for plural in text:text 中的每个字符分配给plural

改用for plural in text.split():

[编辑]要获得所需格式的输出,您需要逐行读取文件,而不是一次全部读取:

def stemming_text_1():
    with open('test.txt', 'r') as f:
        for line in f:
            print line
            singles = []

            stemmer = PorterStemmer() #problem from HERE
            for plural in line.split():
                singles.append(stemmer.stem(plural))
            print ' '.join(singles)

【讨论】:

  • 是的,我可以看到每个单词的词干,每个词的词干。但是,如果我想打印问题中提到的输出怎么办。
  • 非常感谢,我明白了:)
猜你喜欢
  • 1970-01-01
  • 2017-11-18
  • 1970-01-01
  • 2018-06-17
  • 1970-01-01
  • 1970-01-01
  • 2017-06-21
  • 1970-01-01
  • 2016-06-29
相关资源
最近更新 更多