What'是一种简单的方法,可以有效地在短的未知字符串中找到特定的术语或短语
What's a simple way to efficiently find specific terms or phrases within a short unknown string?
正在制作twitterfeed可视化。我有一个很大的数据集。我只想使用包含特定单词字符串的tweet消息。
现在有了这一行:
data = data。Filter (function(d, i){返回d.text。indexOf(新年)!= 1 ?});
返回twitterfeed中包含字符串'new year'的所有tweet。没问题!:)
但是我如何选择多个字符串呢?
实际上,我希望这篇文章还返回包含诸如'newyear'和/或'newyear'和/或'happy 2013'和/或拼写错误等变化的推文。
希望有人能帮助我…
2013年快乐!
将您的搜索词放在自己的数组中,然后在运行检查时循环遍历。
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;
})
这是一个非常经典的字符串搜索/字符串匹配问题。首先,一些术语:字符串匹配算法通常将搜索空间称为"文本"——在这种情况下,是您的tweet或tweet;还有"模式"——你的搜索词。
大多数字符串匹配算法的复杂性是根据文本的长度、模式的长度和匹配的数量来衡量的。
最简单的方法当然是嵌套循环和线性搜索。伪代码:
foreach text (tweet)
foreach pattern (search term)
linear search the text for the pattern
等于O(t * p),其中t是所有文本的总长度,p是所有模式的总长度。您可能可以在这方面进行很大的改进,特别是如果文本或模式在多次运行中固定,则允许您进行一些预处理以进行有效的搜索。看看维基百科对字符串搜索算法的描述,了解一些可能性。
你对特定算法的选择可能取决于你的内存约束以及预处理时间和运行时复杂度之间的权衡。但我要提出一些东西来看看。听起来,您的模式可能是固定的,并且您的文本可能会有所不同(搜索不同的twitter提要?),因此您可能需要查看Aho-Corasick算法。您可能会发现后缀树也是一种有用的数据结构。这些维基百科页面的链接,以及谷歌搜索这些术语应该会帮助您入门(您甚至可以找到实现的代码,尽管我不使用JavaScript,所以我不知道在那里推荐什么)。
- 如何在JavaScript中将字符串转换为函数引用
- jQuery中是否内置了任何字符串格式化函数
- Javascript,有没有一种方法可以将数组写成没有逗号或空格的单个文本字符串
- ng打开空字符串
- 正则表达式在字符串中找到base64
- Android将未知字符串传递给javascript
- JavaScript-从字符串中创建多个未知参数并将其传递给函数
- 当前面的数字或前面字符的组合未知时提取字符串
- 我想在一个字符串中连接几个具有未知类型的变量
- HTML 语法未知,用于显示包含 jpeg 图像的 JavaScript 二进制字符串
- 数组中大小未知的字符串数组
- 如何找到子字符串在javascript如果索引是未知的
- 检查字符串是否包含javascript中的字符序列和未知变量
- 使用JS在Google Apps脚本文档中查找未知字符串并将其更改为大写
- 从未知长度的字符串中提取字符串
- Javascript -将字符串拆分为未知数量的字符串
- 如何从字符串中提取未知的URL
- 未知字符串'%3Ca%20目标='在我的网站URL中
- Javascript提取字符串中的未知数字
- What'是一种简单的方法,可以有效地在短的未知字符串中找到特定的术语或短语