R文本挖掘 - 文本字段之间的交集

3

我想知道是否有快速的方法来查找两个文本字符串之间的有向交集,例如:

 t1 <- "I have achieved my goals over the past 20 years and look forward for my next chalanges"
 t2 <- " have achieved goals and look my chalanges some other words bla bla"

t1 isContainedIn t2将返回7,因为t1中出现的7个单词也出现在t2中。 此外,t1和t2是数据框中的两列,因此我需要在整个数据框上应用该函数,并将结果列附加到我的原始数据框中。 这是我的数据框"data.selected"的样子:

        keywords                                         title
1  Samsung UN48H6350 48" Samsung UN48H6350 48" Full 1080p Smart HDTV 120Hz with Wi-Fi +$50 Visa Gift Card
2  Samsung UN48H6350 48"     Samsung UN48H6350 48" Full HD Smart LED TV -Bundle- (See Below for Contents)
3  Samsung UN48H6350 48"      Samsung UN48H6350 48" Class Full HD Smart LED TV -BUNDLE- See below Details
4  Samsung UN48H6350 48"     Samsung UN48H6350 48" Full HD Smart LED TV With BD-H5100 Blu-ray Disc Player
5  Samsung UN48H6350 48"                 Samsung UN48H6350 48" Smart 1080p Clear Motion Rate 240 LED HDTV
6  Samsung UN48H6350 48"            Samsung UN48H6350 - 48-Inch Full HD 1080p Smart HDTV 120Hz with Wi-Fi
7  Samsung UN48H6350 48"               Samsung 6350 Series UN48H6350 48" 1080p HD LED LCD Internet TV NEW
8  Samsung UN48H6350 48"  Samsung Un48h6350af 75" 1080p Led-lcd Tv - 16:9 - Hdtv 1080p - (un75h6350afxza)
9  Samsung UN48H6350 48"                         Samsung UN48H6350 - 48" HD 1080p Smart HDTV 120Hz Bundle
10 Samsung UN48H6350 48"   Samsung UN48H6350 - 48-Inch Full HD 1080p Smart HDTV 120Hz with Wi-Fi, (R#416)
2个回答

4
我想另一种类似的方法就是使用简单的match
string <- strsplit(c(t1, t2), "\\s+") # similar to @Richard
length(na.omit(match(string[[2]], string[[1]])))
## [1] 7

也许是使用 lapply 函数。
length(unlist(lapply(string[[2]], intersect, string[[1]])))
## [1] 7

3

我不太清楚你所说的“方向很重要”是什么意思。除非你改变数据,否则交叉口的长度不应该发生变化。这可能是你正在寻找的内容。

length(Reduce(intersect, strsplit(c(t1, t2), "\\s+")))
# [1] 7

如果你将 c(t1, t2) 改为 c(t2, t1),你可以在 Reduce 的输出中看到差异。但是,正如我所说的,长度仍然是相同的。只有集合的顺序不同。


你说得对 - 交集不是正确的术语。我想找出 t1 包含在 t2 中的程度:t1 中有多少个项出现在 t2 中(反之不成立 - 方向很重要)。 - user3628777
另外,t1和t2是数据框架 - 我不确定这个解决方案是否支持它,因为当我在我的数据上运行它时,R当前返回character(0)。 - user3628777
@user3628777 - 不,它没有。从一开始就有这些信息会很好。我会进行编辑,但我们需要知道:您到底在比较什么?关键字和标题?请在问题中还展示您所需的更新数据框的结果。 - Rich Scriven

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接