【问题标题】:Find repeated sentences within text在文本中查找重复的句子
【发布时间】:2020-10-25 23:23:44
【问题描述】:

我想知道如何在同一个句子中找到相似之处。 我有一个这样的句子列表:

my_list=["do you want pizza for dinner? Do you want pizza for dinner?", "I like pizza", "I have no money I have no money"]

我想创建一个 pandas 数据框,如果在同一个句子中重复,我分配 1,否则分配 0。

类似这样的:

Text                                                              Repeated?
do you want pizza for dinner? Do you want pizza for dinner?            1
I like pizza                                                           0
I have no money I have no money                                        1

我在想这样的事情:

from collections import Counter


my_list = dict(Counter(my_list.split()))
for i in sorted(my_list.keys()):
    print ('"'+i+'" is repeated '+str(my_list[i])+' time.')

然后计算该句子中总共有多少个单词以及总共有多少个唯一单词。但我认为它不如编码好。 你知道是否有其他方法可以获得预期的结果?

【问题讨论】:

    标签: python pandas counter similarity


    【解决方案1】:

    您可以对任务使用正则表达式 (regex101):

    import re
    import pandas as pd
    
    my_list=["do you want pizza for dinner? Do you want pizza for dinner?", "I like pizza", "I have no money I have no money"]
    df = pd.DataFrame({'Text': my_list})
    
    r = re.compile(r'(.+)\s*\1$', flags=re.I)
    df['Repeated'] = df['Text'].apply(lambda x: bool(r.match(x))).astype(int) 
    print(df)
    

    打印:

                                                    Text  Repeated
    0  do you want pizza for dinner? Do you want pizz...         1
    1                                       I like pizza         0
    2                    I have no money I have no money         1
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-10-25
      • 1970-01-01
      • 1970-01-01
      • 2019-05-07
      • 1970-01-01
      相关资源
      最近更新 更多