问题标签 [text-analysis]

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 回答
3158 浏览

algorithm - 如何确定度量分数的适当权重

我正在对文本分析进行一些个人研究,并提出了近 70 个指标(代词使用频率、阅读水平、元音频率、项目符号的使用等)来“评分”一段文本。

理想情况下,来自同一作者的单独文本将具有相似的分数。最终目标是索引大量作者,并使用分数来猜测谁写了一段单独的匿名文本。

我希望分数从 0 到 100 标准化,并代表两段文本在写作风格中“相似”程度的百分比。诸如如何决定权重之类的问题?以及如何计算分数?描述评分指标背后的数学以及如何标准化,但假设每个指标的权重相同。

我的问题是:如何确定在对每个指标进行评分时使用的适当权重,以确保每个用户的累积分数最准确地描述了该特定用户的写作?

此外,可以为每个用户分配权重。如果每个单词的音节最恰当地描述了谁为 Alice 写了一篇文章,而两个字母单词的频率对 Bob 来说是最好的,我希望 Alice 最重的重量是每个单词的音节,而 Bob 的频率是两个-字母词。

0 投票
1 回答
794 浏览

machine-learning - 为什么斯坦福主题建模工具包确定的 30 个主题彼此如此相似?

斯坦福主题建模工具包(Stanford Topic Modeling Toolkit)在 19,500 篇文章(由 Twitter 用户共享)的语料库中确定的 30 个主题(耗时约 4 小时)彼此如此相似的可能原因是什么?他们有几乎相同的术语,频率=>本质上,我只有一个主题:)

确定的主题可以在这里找到

我在学习和推断阶段之前对文本文档进行标准准备:删除停用词、折叠空格、小写所有内容等。

我的一些参数:

  • 主题数 = 30
  • TermMinimumDocumentCountFilter = (10) ~> // 过滤出现在 < 10 个文档中的术语
  • TermDynamicStopListFilter(30) ~> // 过滤掉 30 个最常用的术语
  • DocumentMinimumLengthFilter(10) // 只接受 >= 10 个词条的文档
  • topicSmoothing = SymmetricDirichletParams(0.01)
  • termSmoothing = SymmetricDirichletParams(0.01)
  • 最大迭代次数 = 10
0 投票
1 回答
1380 浏览

nlp - 为什么斯坦福主题建模工具箱不生成 lda-output 目录?

我尝试从 github(按照 1-2-3 步骤)运行此代码,该代码识别了 Sarah Palin 的 14,500 封电子邮件中的 30 个主题。作者发现的话题在这里。但是,Stanford Topic Modeling Toolbox 并没有为我生成 lda-output 目录。它生成了 lda-86a58136-30-2b1a90a6,但此文件夹中的 summary.txt 仅显示主题的初始分配,而不是最终主题。知道如何使用发现的主题的最终摘要生成 lda-output 目录吗?提前致谢!

0 投票
1 回答
1172 浏览

java - 大型语料库中使用 Lucene/Lingpipe 的 Java 术语文档频率

我正在尝试分析大量文档,这些文档位于一个巨大的文件(3.5GB,300K 行,300K 文档)中,每行一个文档。在这个过程中,我使用 Lucene 进行索引,使用 Lingpipe 进行预处理。

问题是我想去掉文档中非常罕见的单词。例如,如果一个词在语料库(大文件)中出现的次数少于 MinDF 次,我想删除它。

我可以尝试使用 Lucene:计算所有不同术语的文档频率,按升序对它们进行排序,获取 DF 低于 MinDF 的术语,再次检查大文件,并逐行删除这些术语。

这个过程将非常缓慢。有谁知道使用 Java 更快的方法来做到这一点?

问候

0 投票
0 回答
4004 浏览

r - tm 包错误:定义文档术语矩阵时出错

我正在使用“tm”包分析 Reuters 21578 语料库,即 1987 年以来的所有路透社新闻文章。将 XML 文件导入 R 数据文件后,我清理文本——转换为纯文本、转换为小写、删除停用词等(如下所示)——然后我尝试将语料库转换为文档术语矩阵但收到一条错误消息:

UseMethod(“Content”,x)中的错误:没有适用于“内容”的方法应用于“字符”类的对象

在文档术语矩阵之前,所有预处理步骤都可以正常工作。

我创建了语料库的一个非随机子集(包含 4000 个文档),并且文档术语矩阵命令可以正常工作。

我的代码如下。谢谢您的帮助。

0 投票
2 回答
6985 浏览

r - 从 R 中的文档语料库中删除“空”字符项?

我正在使用 R 中的tmandlda包来对新闻文章语料库进行主题建模。但是,我遇到了一个“非字符”问题,因为""这会弄乱我的主题。这是我的工作流程:

不幸的是,当我训练 lda 模型时,除了最常出现的单词是“”之外,一切看起来都很好。我尝试通过从下面给出的词汇中删除它并重新估计上面的模型来解决这个问题:

但是,它仍然存在,如下所示:

关于如何删除它的任何建议?添加""到我的停用词列表中也无济于事。

0 投票
2 回答
197 浏览

python - 如何解析结构松散的文档

我正在分析数据提要,其中的数据有点像这样

现在我需要分析每个规格的含义,ram 6GB, 1333 MHz, DDR3我需要弄清楚 6GB 是容量,1333 MHz 是频率,DDR3 是内存的类型。但是您可以看到的问题是这些非常不规则(有些条目有一些字段而没有其他字段,有时空格用作分隔符,有时,是 s,有时-是 s)。我的第一反应是使用正则表达式,但我很快意识到这很愚蠢。然后我认为我可以split在分隔符上(,在上述情况下),但即使分隔符也不是固定的。此外,这种方法对于像这样的条目将无用memory 4 GB 1333 MHz DDR3使用空格作为该条目的分隔符会使它看起来4 GB 1333 MHz 不同,但实际上4 GB1333 MHz是不同的。另外,我如何以编程方式决定Intel Core i3,,并暗示英特尔酷睿 i3?我知道我必须告诉图书馆一次,并且意思相同。但后来分析文本时应该能够弄清楚。上面提到的条目列表显示了条目的可变性。是否有一些 python 库(或任何其他语言)可以帮助我处理这些任务?Core i3i3-380Ci3Intel Core i3Core i3Ci3

0 投票
3 回答
38722 浏览

pdf - 从乱码PDF中提取文本

我有一个包含有价值的文本信息的 PDF 文件。

问题是我无法提取文本,我得到的只是一堆乱码。如果我将文本从 PDF 阅读器复制并粘贴到文本文件中,也会发生同样的情况。甚至Acrobat Reader 中的文件 -> 另存为文本也会失败。

我已经使用了所有可以使用的工具,结果是一样的。我相信这与字体嵌入有关,但我不知道究竟是什么?

我的问题:

  • 这个奇怪的文字乱码的罪魁祸首是什么
  • 如何从 PDF 中提取文本内容(以编程方式、使用工具、直接操作位等)?
  • 如何修复PDF在复制时不乱码?
0 投票
4 回答
7587 浏览

math - 计算单词之间的相关系数?

对于文本分析程序,我想分析文本中某些单词的共现。例如,我希望看到“Barack”和“Obama”这两个词比其他词更频繁地一起出现(即具有正相关性)。

这似乎并不难。但是,老实说,我只知道如何计算两个数字之间的相关性,而不知道如何计算文本中两个单词之间的相关性。

  1. 我怎样才能最好地解决这个问题?
  2. 如何计算单词之间的相关性?

我想到了使用条件概率,因为例如巴拉克奥巴马比奥巴马巴拉克更有可能;然而,我试图解决的问题更为根本,并且不依赖于单词的顺序

0 投票
0 回答
150 浏览

search-engine - 如何在没有搜索引擎 API 的情况下衡量或比较任意词的相对频率?

不止一次,我想以编程方式使用互联网上的使用频率作为启发式方法来选择两个单词或短语中更好的一个。

显而易见的方法以及手动执行的方法是将每个术语输入搜索引擎并注意有多少“点击”。

但是大型搜索引擎已经弃用了他们的搜索 API,或者每天免费查询 100 次,即使使用 API 密钥也是如此。如果您正在从事免费项目,那就不好了。大型搜索引擎在其服务条款中也有“禁止抓取”条款。

我需要它来处理任意的,甚至是无法识别的语言,以及存储空间有限的设备。这排除了拥有本地语料库或数据库的可能性。


一个应用领域是用于维基词典编辑的工具,即使他们不懂语言,也能帮助他们选择几种变体的主要拼写。我现在想到的是使用频率作为一种启发式方法,以帮助在外国文字的拼写和拉丁字母的有损音译之间选择最佳转换。