检测两个tex之间哪些词是相同的

2024-09-27 09:37:21 发布

您现在位置:Python中文网/ 问答频道 /正文

我需要一些python建议来实现一个算法。你知道吗

我需要的是检测文本1中的哪些单词在文本2中:

Text 1: "Mary had a dog. The dog's name was Ethan. He used to run down the meadow, enjoying the flower's scent."

Text 2: "Mary had a cat. The cat's name was Coco. He used to run down the street, enjoying the blue sky."

我想我可以使用一些pandas数据类型来检查重复,但我不确定。你知道吗

任何关于如何实现这一点的想法都会非常有用。事先非常感谢。你知道吗


Tags: thetoruntextname文本useddown
3条回答

首先将两个字符串中的单词提取到列表中。我想您应该忽略任何尾随句点或逗号。将其中一个列表添加到集合(用于预期的常量时间查找)。对于另一个列表中的每个单词,检查它是否也出现在集合中;这样就可以得到两个文本中的共同单词。我假设重复的元素只计算一次。以下是执行此操作的代码:

def get_words(text):
    words = text.split()
    for i in range(len(words)):
        words[i] = words[i].strip('.,')
    return words

def common_words(text1, text2):
    words1 = get_words(text1)
    words2 = set(get_words(text2))
    common = set()
    for word in words1:
        if word in words2:
            common.add(word)
    return common

例如,它将返回:

{'enjoying', 'had', 'to', 'Mary', 'used', 'the', 'The', 'was', 'down', 'name', 'He', 'run', 'a'}

注意,单词“the”和“the”被认为是不同的。如果不想这样,可以将所有单词转换成小写;words[i] = lower(words[i].strip('.,'))

您可以使用字典首先存储第一个文本中的单词,而不只是在迭代第二个文本时查找。但这需要空间。你知道吗

所以最好的方法是使用正则表达式。你知道吗

既然你没有展示你自己的作品,我就给你一个整体的算法。你知道吗

首先,把每一篇文章分成几个字。这可以通过几种方式实现。您可以删除任何标点符号,然后在空格上拆分。你需要决定在dog's中的撇号是否是你可能想留下撇号的单词的一部分。但是去掉句号,逗号等等。你知道吗

第二,将每个文本的单词放入一个集合中。你知道吗

第三,使用内置的set操作查找两个集合中的单词。你知道吗

这将回答你的实际问题。如果你想问另一个涉及字数或位置的问题,你应该说清楚。你知道吗

相关问题 更多 >

    热门问题