问题标签 [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.
f# - 用于字符串相似性比较的 N-gram 拆分函数
作为练习的一部分,为了更好地理解我目前正在学习的 F#,我编写了将给定字符串拆分为 n-gram 的函数。
1)我想收到关于我的功能的反馈:这可以写得更简单或更有效吗?
2)我的总体目标是编写基于 n-gram 相似度返回字符串相似度(在 0.0 .. 1.0 范围内)的函数;这种方法是否适用于短字符串比较,或者这种方法可以可靠地用于比较大字符串(例如文章)。
3) 我知道 n-gram 比较忽略两个字符串的上下文这一事实。你会建议什么方法来实现我的目标?
search - SOLR 中的 EdgeNGramTokenizerFactory EdgeNGramFilterFactory 有什么区别?
这两个过滤器有什么区别?它们似乎具有相同的效果?
谁能提供一个如何将它们应用于某些文本的示例?
perl - Perl 段落 n-gram
假设我有一段文字:
我想把那个句子变成“关键字”的散列,但我想允许多字关键字;我有以下获取单个单词的关键字:
完成后,我有一个如下所示的哈希:
下一步,以便我可以获得 2 个单词的关键字,如下所示:
但这只会得到每个“其他”对;看起来像这样:
我还需要一个词的偏移量:
有比以下更简单的方法吗?
perl - 从 Perl 中的字符串中提取 n-gram 作为单词
是否有模块或 Perl 代码可以从字符串中提取 n-gram 单词Text::Ngrams
?
java - 从一个句子生成 N-gram
如何生成字符串的 n-gram,例如:
我想用这个输入生成 n-gram:
输出应该是:
在 Java 中给出一些想法,如何实现它或者是否有任何库可供它使用。
我正在尝试使用这个 NGramTokenizer,但它给出了 n-gram 的字符序列,我想要 n-gram 的单词序列。
algorithm - 考虑 QWERTY 键盘布局检测随机键盘点击
最近 Wikipedia 破坏检测竞赛的获胜者表示,可以通过“检测随机键盘击中考虑 QWERTY 键盘布局”来改进检测。
例子:woijf qoeoifwjf oiiwjf oiwj pfowjfoiwjfo oiwjfoewoh
是否有任何软件已经这样做了(最好是免费和开源的)?
如果没有,是否有一个积极的 FOSS 项目,其目标是实现这一目标?
如果没有,您会如何建议实施这样的软件?
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 方法)?
先感谢您。
python - 接近 MySQL 中的串行文本文件读取性能
我正在尝试在 python 中执行一些 n-gram 计数,我认为我可以使用 MySQL(MySQLdb 模块)来组织我的文本数据。
我有一个很大的表,大约 1000 万条记录,表示由唯一数字 id(自动增量)和语言varchar
字段(例如“en”、“de”、“es”等)索引的文档
select * from table
太慢了,内存破坏性很大。我最终将整个 id 范围拆分为更小的范围(例如每个 2000 条记录宽),并使用以下查询逐个处理这些较小的记录集:
等等...
有什么方法可以更有效地使用 MySQL 并获得与连续读取大型语料库文本文件类似的性能?
我不关心记录的顺序,我只想能够处理我的大表中与某种语言有关的所有文档。
unicode - 使用马尔可夫模型将全大写转换为混合大小写和相关问题
我一直在考虑使用马尔可夫技术将丢失的信息恢复为自然语言文本。
- 将全大写文本恢复为大小写混合。
- 将重音/变音符号恢复为应具有但已转换为纯 ASCII 的语言。
- 将粗略的音标转换回本地字母。
这似乎是从最难到最难的顺序。基本上,问题是根据上下文解决歧义。
我可以将维基词典用作字典,将维基百科用作语料库,使用 n-gram 和隐马尔可夫模型来解决歧义。
我在正确的轨道上吗?是否已经有一些用于此类事情的服务、库或工具?
例子
- 乔治在灌木丛中丢失了他的 SIM 卡 ⇨ 乔治在灌木丛中丢失了他的 SIM 卡
- tantot il rit a gorge deployee ⇨ tantôt il rit à gorge déployée