gpt4 book ai didi

python - 如何制作一个 Python 程序来演示 Zipf 定律?

转载 作者:太空宇宙 更新时间:2023-11-03 20:06:40 25 4
gpt4 key购买 nike

齐普夫定律是许多现实生活中的一种模式,齐普夫定律最常见的情况是在文本段落中,其中最常用的单词的数量是第二个最常用单词的两倍。
我一直在学习 Python 中的字典,并尝试自己做这件事,但对它们的一些方面感到困惑。

第一步应该首先从字符串中删除标点符号(这是为了防止下一步出现“to”或“said-”等单词),然后将 .split 转换为列表。然后,创建一个字典,其中键是单词,值是它们的出现次数,这可以使用 for 循环来完成。然后,我怀疑最困难的部分可能是按降序打印所有键和值。

如果不是完整的代码,您能告诉我如何完成每一步,以便我可以自己完成吗?谢谢你!

import operator, pprint

punctuater = ['`','~','!','@','#','$','%','*','(',')','-', \
'_','+','=','[','\]','{','}','|','\\','\"','\'', \
':',';','<',',','>','.','/','?','^','&']
numbers = [1,2,3,4,5,6,7,8,9,0]

def convertForZipf(string):
string = (string.lower())
for i in punctuater:
if i in string:
string = string.replace(i, '')
return string.split()

text = 'Lorem Ipsum Ipsum Ipsum Meow h h h h h n n n n n dolor dolor'
words = convertForZipf(text)
wordsRanked = {}

for i in words:
wordsRanked.setdefault(i, 0)
wordsRanked[i] += 1
wordsRanked = (str((sorted(wordsRanked.items(), key=operator.itemgetter(1), reverse=True))))

for i in wordsRanked:
try:
int(i)
wordsRanked = wordsRanked.replace(str(i), str(i)+'\n')
except ValueError:
pass
print((wordsRanked.replace('[','')
.replace('(','')
.replace(')','')
.replace(']','')
.replace(',',' : ')))

在正式完成这个项目之前,我只需要最后一件事的帮助,我在输出显示方面遇到问题,我的代码高度不一致,并且我愿意接受建议。

最佳答案

这应该符合您的标准 - 我不确定您在代码末尾的 for 循环做了什么 - 您是否试图替换数字?如果是这样,您可以更改我使用的正则表达式模式。

import re
from collections import OrderedDict

pattern = re.compile('[\W_]+')

def convertForZipf(string):
string = string.lower()
pattern.sub('', string)
return string.split()

text = 'Lorem Ipsum Ipsum Ipsum Meow h h h h h n n n n n dolor dolor'
words = convertForZipf(text)
wordsRanked = {}

for i in words:
if i not in wordsRanked:
wordsRanked[i] = 1
else:
wordsRanked[i] += 1

wordsRanked = OrderedDict(sorted(wordsRanked.items(), key=lambda t: t[1], reverse=True))

for k, v in wordsRanked.items():
print(f"{k} appears {v} times.")

输出:

h appears 5 times.
n appears 5 times.
ipsum appears 3 times.
dolor appears 2 times.
lorem appears 1 times.
meow appears 1 times.

关于python - 如何制作一个 Python 程序来演示 Zipf 定律?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58933614/

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