Python 从字符串中获取所有可能的英语单词

Python 从字符串中获取所有可能的英语单词,python,string,nltk,Python,String,Nltk,从python中的给定字符串生成所有可能的英语单词组合 输入:戈达迪 输出:开始,上帝,爸爸,添加,爸爸 有好的图书馆吗?首先,准备一套全英文单词。我认为有很多库可以做到这一点,但对于软件库的建议与堆栈溢出无关,所以请使用您能找到的任何库 然后,遍历字符串的所有子字符串,并查看其中是否有任何子字符串在集合中 words = #??? s = "godaddy" for i in range(len(s)): for j in range(i+1, len(s)): sub

从python中的给定字符串生成所有可能的英语单词组合

输入:戈达迪 输出:开始,上帝,爸爸,添加,爸爸


有好的图书馆吗?

首先,准备一套全英文单词。我认为有很多库可以做到这一点,但对于软件库的建议与堆栈溢出无关,所以请使用您能找到的任何库

然后,遍历字符串的所有子字符串,并查看其中是否有任何子字符串在集合中

words = #???
s = "godaddy"
for i in range(len(s)):
    for j in range(i+1, len(s)):
        substring = s[i:j+1]
        if substring in words:
            print(substring)
结果:

go
god
od
oda
da
dad
daddy
ad
add

请尝试从中对进行附魔

但如果它是所有字符串的组合,不管它是否是有效的英语单词:

>>> list(everygrams(word))
另见:


注 任何字典检查方法都有其局限性:

>>> from nltk.corpus import words as english
>>> vocab = set(w.lower() for w in english.words())
>>> "google" in vocab
False
>>> "stackoverflow" in vocab
False

>>> import enchant
>>> d = enchant.Dict("en_US")
>>> d.check('StackOverflow')
False
>>> d.check('Stackoverflow')
False
>>> d.check('Google')
True
完成这项任务的“原则性”方法是在字符级别进行语言建模,并采用某种概率方法检查字符序列是否与英语单词的概率相同


而且,世界上有很多英语。英式英语中的“有效”词在美式英语中可能是未知词。请参阅和

您可以使用
nltk.corpus.words
创建一组所有英文单词,然后找到从字符串生成的所有可能单词与英文单词的交点:

In [56]: all_words = {st[i:j + i] for j in range(2, len(st)) for i in range(len(st)- j + 1)}

In [57]: english_vocab = set(w.lower() for w in nltk.corpus.words.words())

In [58]: english_vocab.intersection(all_words)
Out[58]: {'ad', 'add', 'addy', 'da', 'dad', 'daddy', 'go', 'god', 'od', 'oda'}

请注意,像
OD
oda
这样的词是有效的缩写。

在我看来,你想使用trie(不要与tree混淆)。那么
oda
da
OD
呢?不要认为它们是有效的“英语”单词=)是的,但如果你能用
nltk获取所有单词,那么效率就没有那么高了。语料库
@Kasramvd缩写词不是有效的英语单词。@Kasramvd如果我们把一个单词理解为拼字游戏中的有效游戏,那么缩写词(包括首字母缩写词,如oda)就不是单词了。执行时间很长。很好。谢谢
In [56]: all_words = {st[i:j + i] for j in range(2, len(st)) for i in range(len(st)- j + 1)}

In [57]: english_vocab = set(w.lower() for w in nltk.corpus.words.words())

In [58]: english_vocab.intersection(all_words)
Out[58]: {'ad', 'add', 'addy', 'da', 'dad', 'daddy', 'go', 'god', 'od', 'oda'}