我有一些文本语料库,其中包含一些字符串。在这些字符串中,有些是英语单词,有些是随机的,例如VmsVKmGMY6eQE4eMI,每个字符串中的字符数量没有限制。
有没有什么方法可以测试一个字符串是否是英语单词?我正在寻找一种算法来完成这项工作。这是Java语言,我不想实现额外的字典。
我有一些文本语料库,其中包含一些字符串。在这些字符串中,有些是英语单词,有些是随机的,例如VmsVKmGMY6eQE4eMI,每个字符串中的字符数量没有限制。
有没有什么方法可以测试一个字符串是否是英语单词?我正在寻找一种算法来完成这项工作。这是Java语言,我不想实现额外的字典。
from nostril import nonsense
real_test = ['bunchofwords', 'getint', 'xywinlist', 'ioFlXFndrInfo',
'DMEcalPreshowerDigis', 'httpredaksikatakamiwordpresscom']
junk_test = ['faiwtlwexu', 'asfgtqwafazfyiur', 'zxcvbnmlkjhgfdsaqwerty']
for s in real_test + junk_test:
print('{}: {}'.format(s, 'nonsense' if nonsense(s) else 'real'))
bunchofwords: real
getint: real
xywinlist: real
ioFlXFndrInfo: real
DMEcalPreshowerDigis: real
httpredaksikatakamiwordpresscom: real
faiwtlwexu: nonsense
asfgtqwafazfyiur: nonsense
zxcvbnmlkjhgfdsaqwerty: nonsense
该项目在GitHub上,欢迎贡献。如果您确实需要Java实现,也许我们可以使Nostril兼容Python 2.7,并尝试使用Jython从Java运行它。
你不能不使用某种字典来完成这个任务。
1)我想到的一件事是以编程方式运行Google搜索这个词。如果它是一个英语单词,你会得到很多页面。如果它是一个随机字符串,你就不会得到那么多页面。但是你仍然使用Google作为字典。你需要使用一些启发式方法,并为返回的页面计数设置一些阈值。
2)另一种可能的方法是找到一些英语字典网络服务(免费或付费),从你的程序中调用。那么你就不需要在你的程序中保存字典,只需要调用外部网络服务即可。检查这个。字典网络服务建议
很遗憾,您无法实现一个可以识别有效英语单词的语法而不使用字典。 英语语言就不能以这种方式建模。
如果您想要实现这一点,可以创建一个包含有效英语单词的数据库,并查询它以检查其有效性。 为了加快这个过程,您可以使用正则表达式来筛选出以下单词:
我相信也有现成的API可供使用,以避免自己实现这个功能。但总的来说,这就是这个过程。
foo1oksana0grishuk3evgeny1platov1
中的金牌得主这样的东西? - Has QUIT--Anony-Mousse