首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在一个短的未知字符串中有效地找到特定的术语或短语的简单方法是什么?

在一个短的未知字符串中有效地找到特定的术语或短语的简单方法是什么?
EN

Stack Overflow用户
提问于 2013-01-09 10:44:25
回答 2查看 80关注 0票数 0

正在进行twitterfeed可视化工作。我有一个大数据集。我只想使用包含特定字符串的tweet消息。

我现在有一句话:

data =data.filter(函数(d,i) ){返回d.text.indexOf(‘新年’)!=-1?真:假;};

它返回包含字符串‘新年’的twitterfeed中的所有tweet。工作良好!:)

但是如何选择多个字符串呢?

实际上,我希望这篇文章还能返回包含‘新年’和/或‘新年快乐’和/或‘快乐2013’和/或拼写错误等变体的推文。

希望有人能帮我..。

2013年快乐!

EN

回答 2

Stack Overflow用户

发布于 2013-01-09 15:20:33

将搜索项放在它们自己的数组中,然后在运行检查时循环执行。

代码语言:javascript
复制
var searchTerms = ['new year', 'christmas', 'boxing day'];

data = data.filter(function(d, i) { 
   var termFound = false;
   for (x in searchTerms) {
      if (d.text.indexOf(searchTerms[x]) != -1) {
          termFound = true;
      }
   }
   return termFound;
   })
票数 0
EN

Stack Overflow用户

发布于 2013-01-10 18:10:43

这是一个非常经典的字符串搜索/字符串匹配问题。首先,一些术语:字符串匹配算法通常将搜索空间称为“文本”--在本例中,指的是您的tweet或tweet;以及“模式”--您的搜索词。

大多数字符串匹配算法的复杂性是根据文本的长度、模式的长度和匹配的数量来衡量的。

当然,朴素的方法是嵌套循环和线性搜索。伪码:

代码语言:javascript
复制
foreach text (tweet)
    foreach pattern (search term)
        linear search the text for the pattern

这是O(t * p),其中t是所有文本的总长度,p是所有模式的总长度。您可能会在这方面有很大的改进,特别是如果文本或模式在多次运行中都是固定的,允许您为有效的搜索进行一些预处理。看看维基百科对字符串搜索算法的描述,了解一些可能性。

您对特定算法的选择可能取决于内存限制和预处理时间与运行时复杂性之间的权衡。但我会扔掉几样东西看。听起来您的模式可能是固定的,您的文本可能会有所不同(搜索不同的twitter提要?),所以您可能想看看Aho-Corasick算法。您可能会发现后缀树也是一种有用的数据结构。这些维基百科页面上的链接,以及谷歌对这些术语的搜索,应该可以帮助您开始工作(您甚至可能会发现实现的代码可以帮助您,尽管我不做JavaScript,所以我不知道在那里推荐什么)。

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

https://stackoverflow.com/questions/14233470

复制
相关文章

相似问题

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