Excel-VBA-检测推文是否相似的函数

问题描述 投票:0回答:1

作为任务的一部分,我受命创建一个VBA函数,该函数检测两个文本字符串是否足够相似并返回true或false。这是我给我的任务的描述...

描述:创建一个名为isDup的VBA函数,该函数将检测两个推文是否足够相似以至于被视为重复。如果给定的两条推文重复,则isDup将返回True,否则返回False。该函数必须具有以下函数头:

函数isDup(tweet1作为字符串,tweet2作为字符串,阈值作为双精度)作为布尔型

其中,tweet1和tweet2是两个不同的tweet的文本,阈值是它们必须共同具有的单词数的百分比,才能将它们视为重复项。它基于第一条推文中的单词总数。如果我们使用的阈值为0.7,并且第一个tweet有100个单词,则这些单词中至少有70个必须与第二个tweet相同,isDup才能为True。如果少于70个单词(如56或34),则该推文不被视为重复,应返回False。请注意,阈值作为参数传递给函数,其值介于0到1之间,不应在函数中硬编码为0.7。

示例:如果tweet1是:规划时间可以节省数周的编码tweet2是:数周的编程可以节省您数小时的计划共同词的正确计数应为8的7,因为唯一的区别是“编码”v.s。如果阈值小于0.875,则“ planning”和isDup应该返回True。请注意,单词总数基于tweet1的长度,并且tweet1中的每个单词最多匹配一次。 “ of”出现两次,因此在tweet1中被匹配两次(而不是四次)。大写应该忽略。

提示:您将需要使用字符串函数StrComp和Split。使用split将字符串分解成单个单词,然后使用strcomp比较它们而忽略大小写。您将需要使用嵌套循环。一个浏览每个单词,另一个浏览一个单词tweet2。

excel vba string twitter
1个回答
0
投票

喜欢这个...

Public Function isDup(tweet1$, tweet2$, threshold#) As Boolean

    Dim c&, i&, j&, t1, t2

    t1 = Split(tweet1)
    t2 = Split(tweet1)

    For i = 0 To UBound(t1)
    Vv  For j = 0 To UBound(t2)
            If Not StrComp(t1(i), t2(j), vbTextCompare) Then c = c + 1
        Next
    Next

    isDup = (c / (UBound(t1) + 1)) > threshold

End Function
© www.soinside.com 2019 - 2024. All rights reserved.