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

mahout - apache mahout 中的 nGram

我正在通过 apache mahout 运行朴素贝叶斯分类器算法。我们可以选择在训练和运行算法实例时设置 gram 大小。

将我的 n-Gram 大小从 1 更改为 2,会极大地改变结果分类。为什么会这样?n-Grams 大小如何使结果发生巨大变化?

0 投票
1 回答
235 浏览

solr - Solr n-gram 以外的任何建议

我正在使用 solr 3.5,但我遇到了问题。我想做的是将file1中的每一行与file2中列出的参考进行比较。但在file1中,数据不一定写正确。所以我决定使用 nGram 将单词从 3 到 15。但如果减 15,将没有匹配项:( 任何有想法解决这个问题的人?

谢谢!博

0 投票
2 回答
8261 浏览

java - 更快的方法来检测字符串中的 n-gram?

我在 SO 上找到了这个解决方案来检测字符串中的 n-gram:(这里:N-gram generation from a sentence

=> 与其他操作相比,这段代码的处理时间最长(我的语料库检测 1-gram、2-gram、3-gram 和 4gram 需要 28 秒:4Mb 的原始文本) (去除停用词等)

有人知道 Java 中的解决方案会比上面介绍的循环解决方案更快吗?(我在考虑多线程,使用集合,或者可能是创造性的方法来拆分字符串......?)谢谢!

0 投票
2 回答
1218 浏览

text - Compressing text using recursive N-Grams

I was just kicking around the idea of breaking up a large group of text into a single integer by using recursive 2-Gram storage until there is only one value left.

#xA;

For example, in the following code I have a 11 word sentence (twelve with the period). I could store each word pair in a database ("this" + "is" = ID #1) and then store each set of two wordpairs in the database (1 + 2 = ID #7), and repeat until I get down to only one word set left - which would be ID 12.

#xA;

Then using the number "12" we can work backwards (if we have the same dataset)

#xA;

While this would take a tremendous amount of work to compress/uncompress each string - it seems like it might have a use in some kind of archive work where the contents need to be stored - but are never read except in rare cases where the uncompression process isn't a problem.

Am I thinking about this correctly? Would the possible number of word sequences just be too great to store like this? (Imagine a 500 word document).

0 投票
1 回答
607 浏览

solr - Solr ngram 与数字不匹配?

我正在使用标准的 Solr ngram 字段定义——

现在“item:ipad AND item:2”找到“iPad 2”,但“item_ngram:ipad AND item_ngram:2”没有。

任何的想法?

0 投票
1 回答
378 浏览

java-me - Trie(三叉搜索树)的 J2ME 实现

我目前正在研究预测文本短信系统。我想使用 TST 数据结构和二元语法来实现它(根据当前键序列 12 键盘预测下一个可能的单词)。
目前我有一个语料库,并使用可用的应用程序来提出字典、二元语法和频率。目前有以下几个问题:

  1. 我可以在这种情况下找到 J2ME TST 实现或合适的 Trie 吗?(对可用的 TST trie 进行更详细的解释会很棒)
  2. 此项目方法的一般指导

注意:我看过类似的 Trie 实现,但仍然无法找到前进的方向

0 投票
3 回答
15164 浏览

lucene - 使用 ElasticSearch 进行文件名搜索

我想使用 ElasticSearch 来搜索文件名(而不是文件的内容)。因此我需要找到文件名的一部分(完全匹配,没有模糊搜索)。

示例:
我有具有以下名称的文件:

现在我想搜索2012.01.13以获取前两个文件。
搜索fileile应该返回除最后一个文件名之外的所有文件名。

我怎样才能用 ElasticSearch 做到这一点?

这是我测试过的,但它总是返回零结果:

0 投票
1 回答
1613 浏览

lucene - 如何使用 Lucene 库提取 n-gram?

我很难把头绕在 Lucene 库上。这是我到目前为止所拥有的:

它在 stream.incrementToken() 处失败。据我了解,ShingleAnalyzerWrapper 使用另一个 Analyzer 来创建 shingle 分析器对象。从那里,我将其转换为令牌流,然后使用属性过滤器对其进行解析。但是,它总是会导致此异常:

线程“主”java.lang.AbstractMethodError 中的异常:org.apache.lucene.analysis.TokenStream.incrementToken()Z

想法?提前致谢!

0 投票
3 回答
1502 浏览

python - 非英语语言(CJK 等)中的 n-gram 名称分析

我正在对人员数据库进行重复数据删除。对于第一遍,我遵循基本的两步过程,以避免对整个数据库进行 O(n^2) 操作,如文献中所述。首先,我“阻塞”——遍历整个数据集,并根据名称中存在的 n-gram 和首字母对每条记录进行分类。其次,使用 Jaro-Winkler 比较每个 bin 的所有记录,以衡量它们代表同一个人的可能性。

我的问题 - 名称是 Unicode。其中一些(尽管不多)名称是 CJK(中日韩)语言。我不知道如何为这些语言中的首字母之类的东西找到单词边界。我不知道 n-gram 分析是否对名称可以是 2 个字符的语言中的名称有效。我也不知道字符串编辑距离或其他相似性指标在这种情况下是否有效。

语言程序员或母语人士有什么想法吗?

0 投票
6 回答
56543 浏览

python - Python:减少字典的内存使用

我正在尝试将几个文件加载到内存中。这些文件具有以下 3 种格式之一:

  • 字符串制表符 int
  • 字符串制表符浮动
  • int 制表符浮动。

实际上,它们是 ngram 静态文件,以防这有助于解决方案。例如:

目前,我现在正在做的伪代码是

令我惊讶的是,虽然磁盘中文件的总大小约为 21 mb,但当加载到内存中时,该进程占用了 120 - 180 mb 的内存!(整个 python 应用程序不会将任何其他数据加载到内存中)。

文件少于 10 个,大多数会保持稳定在 50-80k 行左右,除了一个文件目前有数百万行。

所以我想要求一种技术/数据结构来减少内存消耗:

  • 对压缩技术有什么建议吗?
  • 如果我仍然使用dict,有什么办法可以减少内存?是否可以像在 Java 中为 Python dict 设置“负载因子”?
  • 如果你有一些其他的数据结构,'我也愿意牺牲一些速度来减少内存。然而,这是一个时间敏感的应用程序,所以一旦用户输入他们的查询,我认为花费超过几秒钟的时间来返回结果是不太合理的。关于这一点,我仍然对谷歌如此迅速地完成谷歌翻译感到惊讶:他们一定是使用了很多技术+大量服务器的力量?

非常感谢你。我期待您的建议。