问题标签 [word-frequency]

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 投票
8 回答
21512 浏览

algorithm - 自然语言处理的词频算法

在没有获得信息检索学位的情况下,我想知道是否存在任何算法来计算单词在给定文本中出现的频率。目标是获得人们对一组文本评论的“总体感觉”。沿着Wordle的路线。

我想要什么:

  • 忽略冠词、代词等('a'、'an'、'the'、'him'、'them'等)
  • 保留专有名词
  • 忽略连字符,除了软种类

伸手去拿星星,这些将是桃色的:

  • 处理词干和复数(例如喜欢、喜欢、喜欢、喜欢匹配相同的结果)
  • 形容词(副词等)与其主语(“伟大的服务”相对于“伟大的”、“服务”)的分组

我尝试了一些使用 Wordnet 的基本内容,但我只是盲目地调整了一些东西,并希望它适用于我的特定数据。更通用的东西会很棒。

0 投票
19 回答
98869 浏览

algorithm - 在大词序列中找到前K个频繁词的最有效方法

输入:一个正整数 K 和一个大文本。文本实际上可以被视为单词序列。所以我们不必担心如何将其分解为单词序列。
输出:文本中出现频率最高的 K 个单词。

我的想法是这样的。

  1. 在遍历整个单词序列时,使用哈希表记录所有单词的频率。在这个阶段,key是“word”,value是“word-frequency”。这需要 O(n) 时间。

  2. 对 (word, word-frequency) 对进行排序;关键是“词频”。使用普通排序算法需要 O(n*lg(n)) 时间。

  3. 排序后,我们只取前 K 个单词。这需要 O(K) 时间。

总而言之,总时间是O(n+n lg(n)+K),因为K肯定小于N,所以实际上是O(n lg(n))。

我们可以改进这一点。实际上,我们只想要前 K 个单词。其他词的频率与我们无关。所以,我们可以使用“部分堆排序”。对于步骤 2) 和 3),我们不只是进行排序。相反,我们将其更改为

2') 以“word-frequency”为key,构建一堆(word, word-frequency) pair。构建堆需要 O(n) 时间;

3') 从堆中提取前 K 个单词。每次提取都是 O(lg(n))。因此,总时间为 O(k*lg(n))。

总而言之,这个解决方案花费时间 O(n+k*lg(n))。

这只是我的想法。我还没有找到改进步骤 1) 的方法。
我希望一些信息检索专家可以更多地阐明这个问题。

0 投票
4 回答
5703 浏览

vb.net - 在 VB.NET 中计算词频的最佳方法是什么?

有一些关于如何在 C# 中计算词频的好例子,但没有一个是全面的,我真的需要一个在 VB.NET 中。

我目前的方法仅限于每个频率计数一个单词。什么是最好的方法来改变这个,这样我就可以获得一个完全准确的词频列表?

我更喜欢实际的代码片段,但通用的“哦,是的......使用这个并运行那个”也可以。

0 投票
7 回答
5636 浏览

linux - 确定特定术语的词频

我是一名非计算机科学专业的学生,​​正在撰写一篇历史论文,该论文涉及确定许多文本中特定术语的频率,然后随着时间的推移绘制这些频率以确定变化和趋势。虽然我已经弄清楚如何确定给定文本文件的词频,但我正在处理(相对而言,对我而言)大量文件(> 100),并且为了保持一致性,我想限制频率计数中包含的词到一组特定的术语(有点像“停止列表”的反面)

这应该保持非常简单。最后,我需要的是我处理的每个文本文件的特定单词的频率,最好是电子表格格式(制表符描述的文件),这样我就可以使用该数据创建图表和可视化。

我每天都在使用 Linux,对使用命令行很舒服,并且喜欢开源解决方案(或者我可以用 WINE 运行的东西)。然而,这不是一个要求:

我看到了两种解决这个问题的方法:

  1. 找到一种方法去除文本文件中除预定义列表之外的所有单词,然后从那里进行频率计数,或者:
  2. 找到一种仅使用预定义列表中的术语进行频率计数的方法。

有任何想法吗?

0 投票
4 回答
1914 浏览

search - 免费的谷歌词频数据库?

在本周的 Stackoverflow 播客中,Jeff 提到,他在 2004 年编写了一个脚本,该脚本用 110,000 个英文单词查询 Google,并收集了一个包含每个单词的命中数的数据库。他们在 Stackoverflow 上使用它,例如每个问题页面右侧的“相关”列表。

由于今天用类似的脚本创建其中一个会很困难(正如 Joel 提到的,“在 30,000 字时,你会敲门”),我想知道是否有人知道一个更新的、免费的数据库谷歌词频(例如,从那时起肯定发生变化的 IT 词,如 jquery、ruby、azure 等)。

0 投票
4 回答
2310 浏览

text-files - 寻找一个.txt词频列表来测试一个程序

我想要一份包含 200 到 1000 个左右最常用英语单词的文件。我已经能够找到包含 200,000 个单词或其他内容的荒谬列表,但没有找到更少量的更常用单词。

最好是每行一个单词,但如果不是,那么我可以格式化它。

谢谢!

0 投票
1 回答
1981 浏览

php - 在 PHP 中索引文本文件

我面临着创建一个索引器的挑战,该索引器将所有单词 4 个或更多字符,并将它们与该单词的使用次数一起存储在数据库中。

我必须在 4,000 个 txt 文件上运行这个索引器。目前,大约需要 12-15 分钟 - 我想知道是否有人对加快速度有建议?

目前我将单词放在一个数组中,如下所示:

我认为目前最大的瓶颈是在数据库中存储单词的脚本。它需要将文档添加到essays表中,然后如果表中存在单词,只需将essayid(单词的频率)附加到字段中,如果单词不存在,则添加它......

0 投票
1 回答
1736 浏览

java - 编程珍珠中的词频

在“编程珍珠”中,我遇到了以下问题。问题是这样的:“按频率递减的顺序打印单词”。据我了解问题是这样的。假设有一个给定的字符串数组,我们称它为s (单词我是随机选择的,没关系),

我们看到字符串“cat”出现了 4 次,“fox”出现了 3 次,“dog”出现了 2 次。所以想要的结果是这样的:

我用Java编写了以下代码:

我已经对数组进行了排序并创建了一个计数数组,我在其中写入了数组中每个单词的出现次数。

我的问题是整数数组元素和字符串数组元素的索引不一样。如何根据整数数组的最大元素打印单词?

0 投票
5 回答
4218 浏览

algorithm - 跟踪/计数词频

我想就能够存储和查询词频计数的良好设计获得社区共识。我正在构建一个应用程序,我必须在其中解析文本输入并存储一个单词出现的次数(随着时间的推移)。所以给定以下输入:

  • 《杀死一只知更鸟》
  • “嘲笑钢琴演奏者”

将存储以下值:

并且以后能够快速查询给定任意词的计数值。

我目前的计划是简单地将单词和计数存储在数据库中,并依赖缓存单词计数值......但我怀疑我不会获得足够的缓存命中来使其成为长期可行的解决方案。

任何人都可以提出算法、数据结构或任何其他可能使其成为性能良好的解决方案的想法吗?

0 投票
4 回答
5386 浏览

python - 使用 Python 的文本中的词频但忽略停用词

这给了我一个文本中的单词频率:

这也给了我诸如“the”“an”“a”之类的无用词

我的问题是,python 中是否有一个停用词库可以删除所有这些常用词?我想在谷歌应用引擎上运行它