首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >文本挖掘-文本字段之间的交集

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

Stack Overflow用户
提问于 2015-01-13 19:33:46
回答 2查看 488关注 0票数 3

我想知道是否有一种快速的方法可以在两个文本字符串之间找到有方向的交集。

代码语言:javascript
复制
 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是数据框架中的2列,因此我需要将该函数应用于整个数据框架,并将结果列附加到原始数据框架。这就是我的数据框架“data.selected”的样子:

代码语言:javascript
复制
        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)
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-01-13 20:28:37

我想另一种类似的方法就是使用一个简单的match

代码语言:javascript
复制
string <- strsplit(c(t1, t2), "\\s+") # similar to @Richard
length(na.omit(match(string[[2]], string[[1]])))
## [1] 7

或者可能是lapply

代码语言:javascript
复制
length(unlist(lapply(string[[2]], intersect, string[[1]])))
## [1] 7
票数 4
EN

Stack Overflow用户

发布于 2015-01-13 20:02:24

我不太清楚你所说的方向有什么关系。除非您更改数据,否则交集的长度不应更改。这可能就是你要找的。

代码语言:javascript
复制
length(Reduce(intersect, strsplit(c(t1, t2), "\\s+")))
# [1] 7

如果将c(t1, t2)切换到c(t2, t1),则可以看到Reduce输出中的差异。但正如我所说,长度将保持不变。只是集合的顺序不同。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27930097

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档