我有一份文件清单。像这样:
['nn', 'known', "tsutsumi's", 'father', 'yasujiro', 'sowed', 'seeds', "family's", 'dominion']
['un', 'secretary', 'general', 'kofi', 'annan', 'appointed', 'special', 'representative', 'iraq', 'help', 'improve', 'communication', 'iraqi', 'leaders']
['confidence', 'debate', 'repeatedly', 'chided', 'opposition', 'speakers', 'joining', 'groups', 'bitter', 'critics', 'nationalists', 'past']
每个文档都是字符串列表。
我正在对这些文件进行一些预处理,其中我删除了区分这些单词的后缀。
这是我的代码:
results=[]
with open('/Users/mtr/Documents/Stemtry.txt') as filer:
for line in filer:
results.append(line.strip().split())
result=[]
final=[]
temp=[]
def stemm(n):
for suffix in ['ing', 'ly', 'ed', 'ious', 'ies', 'ive', 'es', "'s", 'ment', "s", "'ve", "'t", "'"]:
if n.endswith(suffix):
return n[:-len(suffix)]
return n
for eachitem in results[:10]:
for n in eachitem:
r=stemm(n)
final.append(r)
print(final)
result.append(final)
datafile=open("Stemmingg.txt", "w")
for each in result:
for every in each:
datafile.write(each+' ')
datafile.write("\n")
print(datafile)
datafile.close()
我的问题是,在删除后缀后,程序会将所有文档的所有单词放入一个大的列表中。但是,我希望它们在预处理之后以原始形式(即早先的文档列表)返回。我该如何修改代码?
答案 0 :(得分:0)
你的意思是对文档每行的每个单词运行stemm()吗?
以下是代码:
final = [[stemm(x) for x in line] for line in result]
答案 1 :(得分:0)
你的决赛不断积累。在外循环中重新定义它:
for eachitem in results[:10]:
final = []
for n in eachitem:
r=stemm(n)
final.append(r)
result.append(final)
甚至更好,请使用list comprehension:
for eachitem in results[:10]:
final = [stemm(n) for n in eachitem]
result.append(final)