问题标签 [n-gram]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
9936 浏览

php - N-gram:解释 + 2 个应用

我想用 n-gram 实现一些应用程序(最好在 PHP 中)。


哪种类型的 n-gram 更适合大多数用途?单词级别还是字符级别 n-gram?如何在 PHP 中实现 n-gram-tokenizer?


首先,我想知道 N-gram 到底是什么。这个对吗?这就是我理解 n-gram 的方式:

句子:“我住在纽约。”

单词级别的二元组(n 为 2):“# I”、“I live”、“live in”、“in NY”、“NY #”

字符级二元组(n 为 2):“#I”、“I#”、“#l”、“li”、“iv”、“ve”、“e#”、“#i”、“in”、“ n#”、“#N”、“NY”、“Y#”

当你有这个 n-gram-parts 数组时,你删除重复的部分并为每个部分添加一个计数器,给出频率:

字级二元组:[1, 1, 1, 1, 1]

字符级二元组:[2, 1, 1, ...]

这个对吗?


此外,我想了解更多关于你可以用 n-gram 做什么的信息:

  • 如何使用 n-gram 识别文本的语言?
  • 即使您没有双语语料库,是否可以使用 n-gram 进行机器翻译?
  • 如何构建垃圾邮件过滤器(垃圾邮件、火腿)?将 n-gram 与贝叶斯滤波器结合起来?
  • 如何进行主题定位?例如:关于篮球或狗的文字?我的方法(对“狗”和“篮球”的维基百科文章执行以下操作):为两个文档构建 n-gram 向量,对其进行归一化,计算曼哈顿/欧几里得距离,结果越接近 1 越高相似

您如何看待我的应用方法,尤其是最后一种?


我希望你能帮助我。提前致谢!

0 投票
3 回答
487 浏览

text-processing - Google 图书的热门段落功能是如何开发的?

我很好奇是否有人理解、知道或可以向我指出有关 Google 如何创建其流行的段落块功能的综合文献或源代码。但是,如果您知道任何其他可以执行相同操作的应用程序,请也发布您的答案。

如果你不知道我在写什么,这里有一个通俗段落示例的链接。当您查看Modeling the legal decision process for information technology applications ... By Georgios N. Yannopoulos一书的概述时,您会看到如下内容:

热门段落

...方向,不确定。我们还没有解决,因为我们没有预料到意外情况发生时会引发的问题;公园里的某种程度的和平是要牺牲还是保护那些以使用这些东西为乐趣或兴趣的孩子。当未设想的情况确实出现时,我们会直面所涉及的问题,然后可以通过在相互竞争的利益中以最能满足我们的方式进行选择来解决问题。在做... ‎ 第86 页

出现在 1968-2003 年的 15 本书中

这将是一个适合“机械”法理学的世界。显然,这个世界不是我们的世界;人类立法者不可能对未来可能带来的所有可能的情况组合有这样的了解。这种无法预测的情况带来了目标的相对不确定性。当我们足够大胆地制定一些一般的行为规则(例如,禁止车辆进入公园的规则)时,在这种情况下使用的语言会确定任何事物都必须满足的必要条件...... ‎ 第86 页

出现在 1968-2000 年的 8 本书中

更多的

它必须是一个密集的模式匹配过程。我只能想到 n-gram 模型、文本语料库、自动抄袭检测。但是,有时 n-gram 是用于预测序列中下一个项目的概率模型,并且文本语料库(据我所知)是手动创建的。而且,在这种特殊情况下,流行的段落可能会有很多单词。

我真的迷路了。如果我想创建这样的功能,我应该如何或从哪里开始?此外,在您的回复中包括最适合这些东西的编程语言:F# 或任何其他功能语言、PERL、Python、Java...(我自己也成为 F# 粉丝)

PS:有人可以包含标签自动抄袭检测吗,因为我不能

0 投票
2 回答
2806 浏览

matlab - 如何在 MATLAB 中实现谱核函数?

频谱核函数通过计算两个字符串之间的相同 n-gram 对字符串进行操作。比如'tool'有3个2-gram('to'、'oo'和'ol'),'tool'和'fool'的相似度是2。('oo'和'ol'的共同点)。

如何编写一个可以计算该指标的 MATLAB 函数?

0 投票
3 回答
394 浏览

n-gram - 在 n-gram 模型中,根据经验发现的最佳 n 值是多少?

我正在实施拼写检查器的变体。在采取各种路线(为了提高时间效率)之后,我计划尝试一个涉及使用 n-gram 模型的组件。所以基本上我想修剪可能的候选人列表以进行进一步处理。你们会不会碰巧知道使用一个 n 值(比如 2)是否会比其他值(比如 3)更好?

0 投票
3 回答
2133 浏览

ruby-on-rails - 需要的建议:Rails、Postgres 和模糊全文搜索

我有带有 Postgres 后端的 Rails 应用程序。

我需要添加全文搜索,这将允许基于 Levenshtein 距离或其他类似指标的模糊搜索。添加词法分析器/词干分析器必须使用非英语单词的事实(可以在词法分析时关闭与语言相关的功能,以免与目标语言混淆,因为目标语言可能具有被英语引擎认为不相关的有意义的单词)。

我猜 Postgres 的 tsearch 在这里不适用,因为它没有模糊搜索——如果我错了,请纠正我。

后端和插件的可能组合是什么?它更喜欢对基础设施添加较少的解决方案(例如,如果 Postgres 可以有模糊 fts,为什么要使用外部 Lucene);OTOH,所涉及的 Rails 插件的质量也很重要。

你会推荐什么?

更新:似乎我需要基于 n-gram 的指标而不是 Levenshtein。

0 投票
2 回答
1348 浏览

algorithm - 概率转移矩阵

我正在研究马尔可夫链,我想知道在给定文本文件作为输入的情况下,构建概率转换矩阵(n阶)的有效算法。

我不追求一种算法,但我宁愿建立一个这样的算法列表。关于此类算法的论文也非常受欢迎,因为任何有关术语的提示等。请注意,该主题与 n-gram 识别算法非常相似。

任何帮助将非常感激。

0 投票
5 回答
46945 浏览

python - Python中N-Gram、tf-idf和余弦相似度的简单实现

我需要比较存储在数据库中的文档,并得出一个介于 0 和 1 之间的相似度分数。

我需要使用的方法必须非常简单。实现 n-gram 的 vanilla 版本(可以定义使用多少克),以及 tf-idf 和余弦相似度的简单实现。

有没有什么程序可以做到这一点?还是我应该从头开始写这个?

0 投票
2 回答
3789 浏览

vb.net - vb.net 中的 N-gram 函数 -> 为单词而不是字符创建gram

我最近发现了 n-gram 以及将文本正文中的短语频率与其进行比较的很酷的可能性。现在我正在尝试制作一个简单的获取文本正文并返回最常用短语列表(其中 n >= 2)的 vb.net 应用程序。

我找到了一个如何从文本正文生成 n-gram 的 C# 示例,因此我开始将代码转换为 VB。问题是这段代码确实每个字符创建一克而不是每个单词一克。我想为单词使用的分隔符是:VbCrLf(新行)、vbTab(制表符)和以下字符:!@#$%^&*()_+-={}|\:\"'?¿ /.,<>'¡º×÷';«»[]

有谁知道我如何为此目的重写以下函数:

0 投票
4 回答
2459 浏览

algorithm - 基于统计而不是字典/表格的“字谜求解器”?

我的问题在概念上类似于解决字谜,除了我不能只使用字典查找。我试图找到似是而非的词而不是真实的词。

我基于一堆文本中的字母创建了一个 N-gram 模型(目前,N=2)。现在,给定一个随机的字母序列,我想根据转换概率将它们排列成最可能的序列。当我开始这个时,我以为我需要维特比算法,但当我深入研究时,维特比算法会根据观察到的输出优化一系列隐藏的随机变量。我正在尝试优化输出序列。

有没有我可以阅读的著名算法?或者我是否在 Viterbi 的正确轨道上,我只是不知道如何应用它?

更新

我添加了一个赏金来要求更多地了解这个问题。(分析解释了为什么一种有效的方法是不可能的,除了模拟退火之外的其他启发式/近似等)

0 投票
4 回答
4915 浏览

search - Drupal 的搜索模块可以搜索子字符串吗?(部分搜索)

Drupal 的核心搜索模块,只搜索关键字,例如“sandwich”。我可以使用子字符串(例如“sandw”)搜索并返回我的三明治结果吗?

也许有一个插件可以做到这一点?