You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

将句子字符串列表转换为词汇集合的高效实现方案问询

高效提取语料库中唯一词汇集合的方案

嘿,我懂你现在的困扰——从句子列表提取唯一词汇集合时原实现太慢了对吧?别发愁,Python里有几个内置的高效方法能帮你解决这个问题,代码还特别简洁。

为什么原实现慢?

大概率是你用了纯Python层面的嵌套循环,手动逐个添加单词还得判断是否已存在,这种方式时间复杂度是O(n²)(每次判断都要遍历现有集合),效率极低。而我们可以利用Python内置的、底层用C优化过的操作,把时间复杂度降到O(n)。

方案1:集合推导式(最简洁高效)

直接用集合推导式一次性完成分割、遍历和去重,这是处理这类问题的首选:

original_format = ["This is a question", "This is another question", "And one more too"]
unique_words = {word for sentence in original_format for word in sentence.split()}

运行后就能得到你想要的结果:{'And', 'This', 'a', 'another', 'is', 'more', 'one', 'question', 'too'}

这个方法高效的原因:

  • split()是内置字符串操作,速度极快
  • 集合基于哈希表实现,添加和查找操作都是O(1)时间复杂度
  • 集合推导式比先建列表再转集合更省内存,不用存储中间的重复单词列表

方案2:用itertools.chain处理大规模语料

如果你的语料库特别大,担心内存占用,可以用itertools.chain扁平化单词序列,避免创建庞大的中间列表:

from itertools import chain

original_format = ["This is a question", "This is another question", "And one more too"]
unique_words = set(chain.from_iterable(sentence.split() for sentence in original_format))

chain.from_iterable会逐个迭代每个句子分割后的单词,直接传递给集合,内存占用比集合推导式更低,适合处理百万级别的句子列表。

额外优化:忽略大小写(可选)

如果你的需求是不区分单词大小写(比如把"This"和"this"视为同一个词),只需在处理时转成小写即可:

unique_words = {word.lower() for sentence in original_format for word in sentence.split()}

这样得到的就是全部小写的唯一词汇集合。

内容的提问来源于stack exchange,提问作者TrentWoodbury

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.27 03:59:31