gpt4 book ai didi

python - 使用 Python 将文本文件中的复数转换为单数

转载 作者:太空狗 更新时间:2023-10-29 20:35:53 27 4
gpt4 key购买 nike

我有这样的 txt 文件:

word, 23
Words, 2
test, 1
tests, 4

我希望它们看起来像这样:

word, 23
word, 2
test, 1
test, 4

我希望能够在 Python 中获取一个 txt 文件并将复数单词转换为单数。这是我的代码:

import nltk

f = raw_input("Please enter a filename: ")

def openfile(f):
with open(f,'r') as a:
a = a.read()
a = a.lower()
return a

def stem(a):
p = nltk.PorterStemmer()
[p.stem(word) for word in a]
return a

def returnfile(f, a):
with open(f,'w') as d:
d = d.write(a)
#d.close()

print openfile(f)
print stem(openfile(f))
print returnfile(f, stem(openfile(f)))

我还尝试了这两个定义而不是 stem 定义:

def singular(a):
for line in a:
line = line[0]
line = str(line)
stemmer = nltk.PorterStemmer()
line = stemmer.stem(line)
return line

def stem(a):
for word in a:
for suffix in ['s']:
if word.endswith(suffix):
return word[:-len(suffix)]
return word

之后,我想采用重复的单词(例如 testtest)并通过将它们旁边的数字相加来合并它们。例如:

word, 25
test, 5

我不知道该怎么做。一个解决方案会很好,但不是必需的。

最佳答案

如果你有复杂的单词要单数化,我不建议你使用词干提取,而是使用合适的 python 包链接 pattern :

from pattern.text.en import singularize

plurals = ['caresses', 'flies', 'dies', 'mules', 'geese', 'mice', 'bars', 'foos',
'families', 'dogs', 'child', 'wolves']

singles = [singularize(plural) for plural in plurals]
print(singles)

返回:

>>> ['caress', 'fly', 'dy', 'mule', 'goose', 'mouse', 'bar', 'foo', 'foo', 'family', 'family', 'dog', 'dog', 'child', 'wolf']

它并不完美,但它是我发现的最好的。 96% 基于文档:http://www.clips.ua.ac.be/pages/pattern-en#pluralization

关于python - 使用 Python 将文本文件中的复数转换为单数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31387905/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com