从文本文件中获取令牌,计算令牌的频率,然后将其返回到Python中的新文本文件中

问题描述 投票:0回答:1

经过长时间的研究和询问朋友,我仍然是傻瓜,不知道如何解决这个问题。

因此,对于家庭作业,我们应该定义一个函数,该函数可以访问两个文件,第一个是带有以下句子的文本文件,我们将从中计算出词频:

在一个被柏林墙隔开的柏林,两个天使达米尔和卡西尔看着这座城市,它的人类居民看不见也未曾听说过。

我们还将包括逗号和句点:每个项目都已被标记化(单个项目被空白包围-包括逗号和句点)。然后,必须将单词频率输入到新的txt文件中,作为“ word:count”,并以单词出现的顺序输入,即:]

在:1 a:1 柏林:2 分为:1

我尝试了以下操作:

def find_token_frequency(x, y):
    with open(x, encoding='utf-8') as fobj_1:
        with open(y, 'w', encoding='utf-8') as fobj_2:
            fobj_1list = fobj_1.split()
            unique_string = []
            for i in fobj_1list:
                if i not in unique_string:
                    unique_string.append(i)
            for i in range(0, len(unique_string)):
                fobj_2.write("{}: {}".format(unique_string[i], fobj_1list.count(unique_string[i])))

我不确定我是否真的需要真正使用.split(),但我不知道该怎么办,而且它也无法正常工作,因为它告诉我无法拆分该对象。

python text-files token word-frequency
1个回答
0
投票

我无法发表评论,因为我没有所需的声誉,但是split()无法正常工作的原因是因为您是在文件对象本身而不是字符串上调用它。尝试致电:

fobj_1list = fobj_1.readline().split()

相反。另外,当我在本地运行此命令时,出现错误消息TypeError: 'encoding' is an invalid keyword argument for this function。您可能需要从函数调用中删除编码参数。

我认为这应该足以使您前进。

© www.soinside.com 2019 - 2024. All rights reserved.