加速ngram处理

2024-04-25 17:02:28 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个单字列表,有很多字(100.000+)。 每一个单词的三角图都在集合allTriGrams中。你知道吗

我想建立一个字典,其中有所有独特的三角形作为关键 所有这些三角形可以匹配的单词都是值。你知道吗

示例:

epicDict = {‘ban’:[‘banana’,’banned’],’nan’:[‘banana’]}

到目前为止我的代码是:

for value in allTriGrams:   
    for word in uniqueWordList:
        if value in word:
            epicDict.setdefault(value,[]).append(word)

我的问题是: 这种方法需要很多时间。有没有办法加快这一进程?你知道吗


Tags: in示例列表for字典value单词单字
2条回答

简单的解决方案中,我希望这会更快:

epicDict = collections.defaultdict(set)
for word in uniqueWordList:
  for trigram in [word[x:x+3] for x in range(len(word)-2)]:
    epicDict[trigram].add(word)

如果uniqueWordList是一个集合,那么您可以这样做:

if value in uniqueWordList:
    epicDict.setdefault(value,[]).append(word)

看看这个: Python Sets vs Lists

相关问题 更多 >