当前位置: 首页 > 面试题库 >

Python-在文本文件中查找单词列表的单词频率

司徒经纶
2023-03-14
问题内容

我试图加快我的项目以计算单词频率的速度。我有360多个文本文件,我需要获取单词的总数以及另一个单词列表中每个单词出现的次数。我知道如何使用单个文本文件执行此操作。

>>> import nltk
>>> import os
>>> os.chdir("C:\Users\Cameron\Desktop\PDF-to-txt")
>>> filename="1976.03.txt"
>>> textfile=open(filename,"r")
>>> inputString=textfile.read()
>>> word_list=re.split('\s+',file(filename).read().lower())
>>> print 'Words in text:', len(word_list)
#spits out number of words in the textfile
>>> word_list.count('inflation')
#spits out number of times 'inflation' occurs in the textfile
>>>word_list.count('jobs')
>>>word_list.count('output')

要获得“通货膨胀”,“工作”,“产出”个体的频率过于繁琐。我可以将这些单词放入列表中并同时查找列表中所有单词的出现频率吗?基本上,这与Python。

示例:代替此:

>>> word_list.count('inflation')
3
>>> word_list.count('jobs')
5
>>> word_list.count('output')
1

我想这样做(我知道这不是真实的代码,这是我在寻求帮助的内容):

>>> list1='inflation', 'jobs', 'output'
>>>word_list.count(list1)
'inflation', 'jobs', 'output'
3, 5, 1

我的单词列表将包含10-20个词,因此我需要能够仅将Python指向单词列表以获取计数。如果输出能够复制并粘贴到Excel电子表格中,字为列,频率为行,那也很好。

例:

inflation, jobs, output
3, 5, 1

最后,有人可以帮助所有文本文件实现自动化吗?我认为我只是将Python指向该文件夹,它就可以针对每个360+文本文件从新列表中进行上述字数统计。似乎很容易,但是我有点卡住了。有什么帮助吗?

这样的输出将是很棒的:Filename1通货膨胀,工作,输出3、5、1

Filename2
inflation, jobs, output
7, 2, 4

Filename3
inflation, jobs, output
9, 3, 5

谢谢!


问题答案:

如果我了解您的问题,collections.Counter()可以解决此问题。

文档中的示例似乎可以解决您的问题。

# Tally occurrences of words in a list
cnt = Counter()
for word in ['red', 'blue', 'red', 'green', 'blue', 'blue']:
    cnt[word] += 1
print cnt


# Find the ten most common words in Hamlet
import re
words = re.findall('\w+', open('hamlet.txt').read().lower())
Counter(words).most_common(10)

从上面的示例中,您应该能够:

import re
import collections
words = re.findall('\w+', open('1976.03.txt').read().lower())
print collections.Counter(words)

EDIT 幼稚的方法来显示一种方式。

wanted = "fish chips steak"
cnt = Counter()
words = re.findall('\w+', open('1976.03.txt').read().lower())
for word in words:
    if word in wanted:
        cnt[word] += 1
print cnt


 类似资料:
  • 问题内容: 我正在尝试查找文件中出现的单词数。我有一个文本文件(),文件内容如下: 我期望的结果是: 我使用的代码是: 我得到的结果是: 谁能帮帮我吗?提前致谢 。 问题答案: 使用计数器的方法。例: 输出:

  • 我是新来的,我想要得到一个文本文件的单词列表和单词数。这是我尝试过的代码: 输出:century Cepheus CEQ陶瓷Cerberus谷类小脑错误文件字数:0

  • 给定两个文件会产生一个算法/程序来查找文件1中的单词,而不是文件2中的单词。请注意,文件中的单词不是按顺序排列的。 这是我的思考过程: 步骤1:读取文件2的单词并将其添加到哈希集 如果两个文件中的字数都只有100或1000个,那么这个算法就可以正常工作 但是,如果两个文件都很大(数十亿字),那么此解决方案将无法工作,因此我提出了一个改进的解决方案: 步骤1:逐字阅读文件2,并按字母顺序对单词进行排

  • 问题内容: 我在MySql DB的一个表中有一个文本列。我想获取在文本列中具有特定单词的所有记录。例如: 在这种情况下,当搜索“ cto”时,我希望查询返回记录1,2,3,4,而不是5。 有任何想法吗? ps我希望它不区分大小写 问题答案: 您可能希望根据全文索引使用全文索引。否则,您可以使用REGEXP来指定正则表达式来搜索单词。您应该看到此问题(和答案),以了解如何使用REGEXP查找单词。

  • 问题内容: 我有一个具有以下格式的.txt文件, 尽管显然它要大得多,但实际上是这样。基本上,我试图总结每个单独字符串在文件中的次数(每个字母/字符串在单独的一行上,因此从技术上讲文件是C \ nV \ nEH \ n等。但是,当我尝试将这些文件转换为列表,然后使用count函数时,它会分离出字母,以使诸如’IRQ’之类的字符串为[‘\ n’I’,’R’ ,’Q’,’\ n’],这样当我计算它时,

  • 问题内容: 如何使用Java在多个文本文件中查找和替换单词? 这是我一次做的方法… 问题答案: 从Commons IO使用: