【发布时间】:2021-12-09 07:20:10
【问题描述】:
我最近有一个作业去计算一个句子中的单词数。够简单吧?
你将输入句子分配给一个列表,你 .split() 它,然后你 .count。
问题是:
a) 如果句子不是句子怎么办? (不以点结尾)? 很容易解决:检查是 string[-1][-1]=="."我们就完成了。
b) 这就是事情变得棘手的地方......
如果一个词 - 根本不是一个词怎么办?
示例:djgghjdjgf、7zark7。 blizz-ard、twi@ter 等
我发现 pyenchant 可以解决大多数问题...但是:
- 它无法识别以撇号 (') like Chris' 结尾的单词 - 作为单词。事实上,它根本不将名称识别为单词......
我可以运行一个双重 .check: 一个用于 pyenchant,但我必须再做一个来看看它是否是一个名称..这是一个单词...
任何人都知道与 pyenchant 类似的 mudule(基本上是一个字典),只有 NAMES(如果存在的话)?
那将不胜感激。
也欢迎其他解决方案。
附言
len(s.split()) 是不对的?如果我是对的 #%#$65477 - 那不是(!)一个词。它只是列表中的一个项目(我被要求输入单词,可能是真实的)。
再次感谢。
【问题讨论】:
-
请求对模块的认可是题外话。不要把事情复杂化。如果您需要计算特定的单词,请索取一份详尽的列表。没有“名字列表”——约翰、乔恩、琼、乔布斯——哪一个是名字? “乔布斯说……”和“乔布斯很少有趣”——它在哪里被用作名字,哪里不是?上下文很重要:“史蒂夫·乔布斯是个很酷的人。乔布斯说……”如果您需要区分“有意义的单词”和“字母垃圾”,您可能需要上下文、语义或自然语言处理能力。顺便提一句。句子也可能以 ?或者 !旁边。
-
阅读Falsehood programmers believe about names 可能会有所收获——只是为了好玩并拓宽“姓名”的概念。
-
您在所有帐户上都是对的。我想我只会以常规方式解决问题,而不是去做我目前没有能力做的事情(即使我问过的那个模块确实存在)。非常感谢您的帮助。
-
在阅读了您建议的材料后,我对您的意思有了更好的理解。感谢您为我在一项相当徒劳的任务上节省了时间和精力。我会按照“教科书”的方式来做。