【问题标题】:Python: find common sentence fragments in list of sentencesPython:在句子列表中查找常见句子片段
【发布时间】:2018-09-13 10:12:37
【问题描述】:

假设我有一个句子列表,例如:

quick brown blah red work word
quick brown too red blah someone
quick gray one two three
quick gray two three four
quick gray johnson week summer
quick gray johnson day week water fall
quick gray wicked stopper fall
quick gray hotel flamer walk
doggie bone
doggie python
doggie python tree flower python
doggie python flower whatever
tree bone stick

我正在寻找代码以返回常见的“父”句子列表:

quick brown
quick gray
quick gray johnson
doggie bone
doggie python
tree bone stick

谢谢

【问题讨论】:

  • 到目前为止你尝试了什么?
  • 我没有尝试过任何东西——我想我需要某种递归函数。在我崩溃之前,有没有 Python 库......?
  • 这篇文章是否因为不够清晰而被否决?

标签: python list set-intersection


【解决方案1】:

给你:

def removeNumbers(data):
    result = []
    for sent in data:
        temp = []
        words = sent.split()
        for word in words:
            try:
                number = int(word)
                break
            except:
                temp.append(word)
        result.append(" ".join(temp))
    return result
data = [
    'quick brown 580 650 040 050',
    'quick brown 650 160 150 500',
    'quick gray 075 060 400',
    'quick gray 087 565 600',
    'quick gray johnson 149 135',
    'quick gray johnson 600 650 070 600',
    'quick gray 565 070 250',
    'quick gray 630 550 400',
    'doggie 256',
    'doggie python',
    'doggie python 350 675 106',
    'doggie python 417 560',
    'tree 196 106'
]
data = removeNumbers(data)
print(list(set(data)))

【讨论】:

    【解决方案2】:

    您可以使用正则表达式轻松完成:

    >>> result=[]
    >>> for i in data:
    >>>     r = re.search(r'([a-z]+\s*)+', i)
    >>>     if r:
    >>>         res = r.group(0).strip()
    >>>         if res not in result:
    >>>             result.append(res.strip())
    >>> print(result)
    ['quick brown', 'quick gray', 'quick gray johnson', 'doggie', 'doggie python', 'tree']
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-09-01
      • 2016-08-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-12-11
      相关资源
      最近更新 更多