问题标签 [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 投票
4 回答
3533 浏览

f# - 用于字符串相似性比较的 N-gram 拆分函数

作为练习的一部分,为了更好地理解我目前正在学习的 F#,我编写了将给定字符串拆分为 n-gram 的函数。
1)我想收到关于我的功能的反馈:这可以写得更简单或更有效吗?

2)我的总体目标是编写基于 n-gram 相似度返回字符串相似度(在 0.0 .. 1.0 范围内)的函数;这种方法是否适用于短字符串比较,或者这种方法可以可靠地用于比较大字符串(例如文章)。

3) 我知道 n-gram 比较忽略两个字符串的上下文这一事实。你会建议什么方法来实现我的目标?

0 投票
1 回答
1661 浏览

search - SOLR 中的 EdgeNGramTokenizerFactory EdgeNGramFilterFactory 有什么区别?

这两个过滤器有什么区别?它们似乎具有相同的效果?

谁能提供一个如何将它们应用于某些文本的示例?

0 投票
5 回答
2269 浏览

perl - Perl 段落 n-gram

假设我有一段文字:

我想把那个句子变成“关键字”的散列,但我想允许多字关键字;我有以下获取单个单词的关键字:

完成后,我有一个如下所示的哈希:

下一步,以便我可以获得 2 个单词的关键字,如下所示:

但这只会得到每个“其他”对;看起来像这样:

我还需要一个词的偏移量:

有比以下更简单的方法吗?

0 投票
1 回答
799 浏览

perl - 从 Perl 中的字符串中提取 n-gram 作为单词

是否有模块或 Perl 代码可以从字符串中提取 n-gram 单词Text::Ngrams

0 投票
7 回答
56127 浏览

java - 从一个句子生成 N-gram

如何生成字符串的 n-gram,例如:

我想用这个输入生成 n-gram:

输出应该是:

在 Java 中给出一些想法,如何实现它或者是否有任何库可供它使用。

我正在尝试使用这个 NGramTokenizer,但它给出了 n-gram 的字符序列,我想要 n-gram 的单词序列。

0 投票
5 回答
1986 浏览

algorithm - 考虑 QWERTY 键盘布局检测随机键盘点击

最近 Wikipedia 破坏检测竞赛的获胜者表示,可以通过“检测随机键盘击中考虑 QWERTY 键盘布局”来改进检测。

例子:woijf qoeoifwjf oiiwjf oiwj pfowjfoiwjfo oiwjfoewoh

是否有任何软件已经这样做了(最好是免费和开源的)?

如果没有,是否有一个积极的 FOSS 项目,其目标是实现这一目标?

如果没有,您会如何建议实施这样的软件?

0 投票
2 回答
6716 浏览

c# - N-gram 的 C# 算法

我打算使用本文中的 n-gram代码。该算法产生这些三元组结果:

对于文本the quick red

然而wikipedia认为它应该是:

(由“_”表示的空格)。

什么是正确的?还有其他 C# 实现吗?

0 投票
1 回答
8038 浏览

similarity - 带有余弦相似度测量的 n-gram 句子相似度

我一直在做一个关于句子相似度的项目。我知道它已经在 SO 中被问过很多次,但我只是想知道我的问题是否可以通过我使用的方法来解决,或者我应该改变解决问题的方法。粗略地说,系统应该拆分一篇文章的所有句子,并在提供给系统的其他文章中找到相似的句子。

我正在使用带有 tf-idf 权重的余弦相似度,这就是我的做法。

1-首先,我将所有文章分成句子,然后为每个句子生成三元组并对它们进行排序(我应该吗?)。

2-我计算三元组的 tf-idf 权重并为所有句子创建向量。

3-我计算原始句子和要比较的句子的点积和大小。然后计算余弦相似度。

但是,该系统没有按我预期的那样工作。说到这里,我心里有几个问题。

据我了解 tf-idf 权重,我想它们对于查找类似的“文档”更有用。由于我正在研究句子,因此我通过更改 tf 和 idf 定义公式的一些变量来稍微修改了算法(而不是我试图提出基于句子的定义的文档)。

tf = 句子中 trigram 出现的次数 / 句子中所有 trigram 的数量

idf = 所有文章中所有句子的数量/出现 trigram 的句子数量

你认为对这个问题使用这样的定义可以吗?

另一个是我在计算余弦相似度时看到多次提到归一化。我猜这很重要,因为三元向量的大小可能不同(在我的情况下它们很少)。如果一个三元向量是 x 的大小,另一个是 x+1,那么我将第一个向量视为 x+1 的大小,最后一个值为 0。这就是归一化的意思吗?如果没有,我该如何进行标准化?

除了这些,如果我选择了错误的算法,还有什么可以用于此类问题(最好使用 n-gram 方法)?

先感谢您。

0 投票
3 回答
118 浏览

python - 接近 MySQL 中的串行文本文件读取性能

我正在尝试在 python 中执行一些 n-gram 计数,我认为我可以使用 MySQL(MySQLdb 模块)来组织我的文本数据。

我有一个很大的表,大约 1000 万条记录,表示由唯一数字 id(自动增量)和语言varchar字段(例如“en”、“de”、“es”等)索引的文档

select * from table太慢了,内存破坏性很大。我最终将整个 id 范围拆分为更小的范围(例如每个 2000 条记录宽),并使用以下查询逐个处理这些较小的记录集:

等等...

有什么方法可以更有效地使用 MySQL 并获得与连续读取大型语料库文本文件类似的性能?

我不关心记录的顺序,我只想能够处理我的大表中与某种语言有关的所有文档。

0 投票
2 回答
277 浏览

unicode - 使用马尔可夫模型将全大写转换为混合大小写和相关问题

我一直在考虑使用马尔可夫技术将丢失的信息恢复为自然语言文本。

  • 将全大写文本恢复为大小写混合。
  • 将重音/变音符号恢复为应具有但已转换为纯 ASCII 的语言。
  • 将粗略的音标转换回本地字母。

这似乎是从最难到最难的顺序。基本上,问题是根据上下文解决歧义。

我可以将维基词典用作字典,将维基百科用作语料库,使用 n-gram 和隐马尔可夫模型来解决歧义。

我在正确的轨道上吗?是否已经有一些用于此类事情的服务、库或工具?

例子

  • 乔治在灌木丛中丢失了他的 SIM 卡 ⇨ 乔治在灌木丛中丢失了他的 SIM 卡
  • tantot il rit a gorge deployee ⇨ tantôt il rit à gorge déployée