首页 > 解决方案 > 如何将一个句子分成几个词组?

问题描述

我想将一个句子拆分成几个有意义的部分,例如:我有一个来自用户的输入:Samsung phone case ,我想拆分成一个列表:[,,,Samsung phone] phone caseSamsung phone case这意味着Samsung phone是一个有效的对象,phone case是另一个有效的对象,Samsung phone case也是一个有效的对象,如何用 python 做到这一点?

版主说我需要添加一些调试细节,所以我再解释一下,我需要分析来自用户的输入,例如拆分/组合,另一个例子:用户输入:case of Samsung phone,我需要的结果是:[ case of Samsung, case of Samsung phone, Samsung phone],这不是一个示例拆分和组合,因为case of不是我需要的,我尝试了 nltk lib,它可以拆分为每个单词,但没有组合。

所以关键是在组合之后,短语/单词应该像上面的例子一样有意义=> [ case of Samsung, case of Samsung phone, Samsung phone] 中的每一个都是有意义的,但case of没有意义(不是有效的对象)。

我不知道是否有 AI 库可以帮助我解决问题。

标签: python

解决方案


看起来您不是想要拆分,而是想要组合(或某种电源组)。拆分是必要的中间环节:

s = 'Samsung phone case'

from itertools import combinations, chain

l = s.split()
list(chain(*(map(' '.join, combinations(l, r=n)) for n in range(2,len(l)+1))))

输出:

['Samsung phone', 'Samsung case', 'phone case', 'Samsung phone case']

推荐阅读