标签: text-mining

使用.Net进行文本挖掘,事实提取,语义分析

我正在寻找任何免费的工具/组件/库,这些工具/组件/库允许我在.NET应用程序中利用文本挖掘,事实提取和语义分析.

GATE项目正是我需要的,但它是用Java编写.在.NET世界中有类似GATE的东西吗?

我的挑战是从网站文本内容中提取某些事实.我打算使用一些NLP算法来实现这样的功能,但我不确定如何实现它们,所以如果可用的话,我将使用任何现有的解决方案.

如果你能给我一些提示,我将不胜感激.我是这方面的新手,所以任何相关的信息对我来说都非常有用.

.net nlp text-mining semantic-analysis

6
推荐指数
1
解决办法
2858
查看次数

从用户提交的文本中提取关键字的好方法是什么?

我正在建立一个网站,允许用户通过图形表示支持和反对特定问题的论据来理解辩论.(Wrangl)

我想对这些辩论进行分类,以便更容易找到并连接起来.我不想通过要求他们在看到任何好处之前添加标签和类别来激怒创建辩论的人,所以我正在寻找一种自动提取关键字的方法.

采用辩论的标题和描述(以及可能的论点内容,一旦有一些内容),提出一个很好的方法,例如,可以用作元数据的十个强有力的关键词,将类似的辩论连接在一起,甚至作为可以查看辩论的HTML页面头部中的"meta"关键字标签的内容.例如.Datamapper与ActiveRecord

该站点使用DataMapper进行数据存储,使用Sinatra在Ruby中编码.我理想地寻找可以在Heroku上运行的东西(我没有办法动态地将文件写入磁盘),我会考虑一个Web服务,一个API或者理想的Ruby宝石.

ruby metadata keyword text-mining sinatra

6
推荐指数
1
解决办法
2064
查看次数

使用示例生成语法的工具?

这个答案显示了一个使用解析器生成器查看文本以查找某些感兴趣模式的漂亮示例。在那个例子中,它是产品价格。

有谁知道在给定训练示例(我想要的文档 + 信息)的情况下生成语法的工具?我找到了几篇论文,但没有找到工具。我浏览了ANTLR文档,但它涉及语法;“识别器”将语法作为输入,而不是训练示例。

grammar text-mining

6
推荐指数
1
解决办法
1362
查看次数

无监督命名实体识别(NER),带有用于Java中交联建议的自定义控制词汇表

我正在寻找一个可以使用自定义控制词汇表进行命名实体识别(NER)的Java库,而不需要先标记训练数据.我在SE上搜索了一些,但大多数问题都不太明确.

考虑以下用例:

  • 编辑正在CMS中输入文章(约500字).
  • 文本可能包含对特定域的实体的引用(以纯文本形式).例如:
    • 兴趣点的名称,如酒吧,餐馆,以及社区等.
  • 存在这些实体的受控词汇表(约5.000个实体).
    • 我想象一个实体是词汇中的一个元组
  • 完成文本后,用户应该能够保存文档.
  • 这会触发工作流程,通过与实体名称进行比较,针对词汇表扫描文本.它不需要100%匹配:Jarao-winkler的97%或者其他(我不熟悉algo的NER使用的)可能就足够了,我需要这个是可配置的.
  • 命中数返回到控制器服务器端.这反过来将JSON返回给包含实体的客户端,这些实体表示为编辑器的建议交叉.

理想情况下,我正在寻找一个项目,该项目使用NRE来建议CMS环境中的交联以便搭载.(我确定wordpress的插件存在例如)不确定Java中是否存在类似的东西.

还欢迎使用与受控自定义词汇表一起使用的NRE库的所有其他更一般的指针.

java information-retrieval named-entity-recognition text-mining

6
推荐指数
1
解决办法
1430
查看次数

R正则表达式Lookbehind

我有一个向量填充以下格式的字符串: <year1><year2><id1><id2>

向量的第一个条目如下所示:

199719982001
199719982002
199719982003
199719982003
Run Code Online (Sandbox Code Playgroud)

对于第一个条目,我们有:year1 = 1997,year2 = 1998,id1 = 2,id2 = 001.

我想写一个正则表达式,它取出year1,id1和id2的数字不为零.所以对于第一个条目,正则表达式应该输出:199721.

我尝试使用stringr包,并创建了以下正则表达式:

"^\\d{4}|\\d{1}(?<=\\d{3}$)"
Run Code Online (Sandbox Code Playgroud)

拉出year1和id1,然而当使用lookbehind我得到一个"无效的正则表达式"错误.这对我来说有点令人费解,R不能处理前瞻和外观吗?

regex r package text-mining

6
推荐指数
2
解决办法
6385
查看次数

R:Naives贝叶斯分类器仅基于先验概率决定

我试图根据他们的情绪将推文分为三类(买入,持有,卖出).我正在使用R和e1071包.

我有两个数据框:一个训练集和一组新推文,需要预测情绪.

训练集数据框:

   +--------------------------------------------------+

   **text | sentiment**

   *this stock is a good buy* | Buy

   *markets crash in tokyo* | Sell

   *everybody excited about new products* | Hold

   +--------------------------------------------------+
Run Code Online (Sandbox Code Playgroud)

现在我想使用推文文本trainingset[,2]和情绪类别来训练模型 trainingset[,4].

classifier<-naiveBayes(trainingset[,2],as.factor(trainingset[,4]), laplace=1)
Run Code Online (Sandbox Code Playgroud)

用分析查看分类器的元素

classifier$tables$x

我发现条件概率是计算出来的.每一条有关买入,持有和卖出的推文都有不同的概率.太好了.

但是当我预测训练集时:

predict(classifier, trainingset[,2], type="raw")

我得到的分类基于先验概率,这意味着每条推文都被归类为Hold(因为"Hold"在情绪中占有最大份额).所以每条推文都有相同的买入,持有和卖出概率:

      +--------------------------------------------------+

      **Id | Buy | Hold | Sell**

      1  |0.25 | 0.5  | 0.25

      2  |0.25 | 0.5  | 0.25

      3  |0.25 | 0.5  | 0.25

     ..  |..... | ....  | ...

      N  |0.25 …
Run Code Online (Sandbox Code Playgroud)

r classification machine-learning text-mining

6
推荐指数
1
解决办法
2283
查看次数

从R中的Document-Term-Matrix过滤行/文档

在RI中使用tm-package创建一个Document-Term-Matrix:

dtm <- DocumentTermMatrix(cor, control = list(dictionary=c("someTerm")))
Run Code Online (Sandbox Code Playgroud)

哪个结果是这样的:

A document-term matrix (291 documents, 1 terms)

Non-/sparse entries: 48/243
Sparsity           : 84%
Maximal term length: 8 
Weighting          : term frequency (tf) 

                   Terms
Docs                someTerm
doc1                       0
doc2                       0
doc3                       7
doc4                       22
doc5                       0
Run Code Online (Sandbox Code Playgroud)

现在我想根据文档中someTerm的出现次数过滤这个Document-Term-Matrix.例如,仅过滤someTerm至少出现一次的文档.即doc3和doc4.

我怎样才能做到这一点?

r matrix text-mining tm

6
推荐指数
1
解决办法
6128
查看次数

使用tm的语料库函数和R中的大数据

我正在尝试对R中的大数据进行文本挖掘tm.

我经常遇到内存问题(例如can not allocation vector of size....)并使用已建立的方法来解决这些问题,例如

  • 使用64位R
  • 尝试不同的操作系统(Windows,Linux,Solaris等)
  • 设置memory.limit()为最大值
  • 确保服务器上有足够的RAM和计算(有)
  • 自由使用 gc()
  • 分析瓶颈代码
  • 将大型业务分解为多个较小的业务

但是,当尝试Corpus在一百万左右的文本字段的向量上运行时,我遇到的内存错误与平时略有不同,我不知道如何解决问题.错误是:

> ds <- Corpus(DataframeSource(dfs))
Error: memory exhausted (limit reached?)
Run Code Online (Sandbox Code Playgroud)

我可以(并且应该)Corpus在源数据帧的行块上递增运行然后合并结果吗?有没有更有效的方法来运行它?

产生此错误的数据大小取决于运行它的计算机,但如果您使用内置crude数据集并复制文档直到它足够大,那么您可以复制错误.

UPDATE

我一直在尝试尝试结合较小的corpa,即

test1 <- dfs[1:10000,]
test2 <- dfs[10001:20000,]

ds.1 <- Corpus(DataframeSource(test1))
ds.2 <- Corpus(DataframeSource(test2))
Run Code Online (Sandbox Code Playgroud)

虽然我都没有成功,我也发现tm_combine这是应该解决这个确切的问题.唯一的问题是,由于某种原因,我的64位版本的R 3.1.1与最新版本tm无法找到该功能tm_combine.也许它出于某种原因被从包中删除了?我正在调查......

> require(tm)
> ds.12 <- tm_combine(ds.1,ds.2)
Error: could not find function "tm_combine"
Run Code Online (Sandbox Code Playgroud)

r text-mining bigdata tm

6
推荐指数
1
解决办法
3227
查看次数

使用Gensim获得LDA模型的最佳主题数的最佳方法是什么?

我试图在Gensim中获得LDA模型的最佳主题数.我发现的一种方法是计算每个模型的对数似然,并将每个模型相互比较,例如,使用潜在Dirichlet分配的输入参数

因此,我研究了使用Gensim计算LDA模型的对数似然性,并得出以下文章:您如何估计潜在Dirichlet分配模型的α参数?

这基本上说明update_alpha()方法实现了黄,乔纳森所描述的方法.Dirichlet分布参数的最大似然估计.我仍然不知道如何在不更改代码的情况下使用libary获取此参数.

如何使用Gensim从LDA模型获取对数似然?

有没有更好的方法来获得Gensim的最佳主题数量?

python text-mining lda gensim topic-modeling

6
推荐指数
2
解决办法
4387
查看次数

如何向StopWordsRemover添加自定义停用词列表

我在我的pyspark数据帧上使用pyspark.ml.feature.StopWordsRemover类.它有ID和Text列.除了提供的默认停用词列表,我想添加自己的自定义列表以从字符串中删除所有数值.

我可以看到有一个方法可以为这个类添加setStopWords.我想我正在努力使用正确的语法来使用这种方法.

from pyspark.sql.functions import *
from pyspark.ml.feature import * 

a = StopWordsRemover(inputCol="words", outputCol="filtered")
b = a.transform(df)
Run Code Online (Sandbox Code Playgroud)

上面的代码在过滤列中给出了预期结果,但它只删除/停止标准单词.我正在寻找一种方法来添加我自己的自定义列表,该列表将包含我希望过滤的更多单词和数值.

python text-mining stop-words pyspark spark-dataframe

6
推荐指数
1
解决办法
2409
查看次数