这个在自然语言处理里比较类似于 Constituency Parsing 问题,将一个句子分成多个子组成部分,每个子组成部分又可以进一步细分。
但是题主你的需求定义是不明确的,“有意义的词组”这个概念太宽泛了。比方说 A match / is / a tool / for starting / a fire. 我就觉得 A match / is / a tool / for / starting a fire. 更合理。
我觉得可以先做 Constituency Parsing,然后定义一些规则,用于处理解析结果。
例如 Typically, modern matches are made of small wooden sticks or stiff paper. 使用 AllenNLP (
https://demo.allennlp.org/constituency-parsing/MjYyNTUwNQ==) 这个工具做 Constituency Parsing,就可以发现其实已经分好了,只是题主还需要定义规则,决定 Constituency Parsing 的结果细分到哪一层