我正在寻找任何免费的工具/组件/库,这些工具/组件/库允许我在.NET应用程序中利用文本挖掘,事实提取和语义分析.
该GATE项目正是我需要的,但它是用Java编写.在.NET世界中有类似GATE的东西吗?
我的挑战是从网站文本内容中提取某些事实.我打算使用一些NLP算法来实现这样的功能,但我不确定如何实现它们,所以如果可用的话,我将使用任何现有的解决方案.
如果你能给我一些提示,我将不胜感激.我是这方面的新手,所以任何相关的信息对我来说都非常有用.
我正在建立一个网站,允许用户通过图形表示支持和反对特定问题的论据来理解辩论.(Wrangl)
我想对这些辩论进行分类,以便更容易找到并连接起来.我不想通过要求他们在看到任何好处之前添加标签和类别来激怒创建辩论的人,所以我正在寻找一种自动提取关键字的方法.
采用辩论的标题和描述(以及可能的论点内容,一旦有一些内容),提出一个很好的方法,例如,可以用作元数据的十个强有力的关键词,将类似的辩论连接在一起,甚至作为可以查看辩论的HTML页面头部中的"meta"关键字标签的内容.例如.Datamapper与ActiveRecord
该站点使用DataMapper进行数据存储,使用Sinatra在Ruby中编码.我理想地寻找可以在Heroku上运行的东西(我没有办法动态地将文件写入磁盘),我会考虑一个Web服务,一个API或者理想的Ruby宝石.
我正在寻找一个可以使用自定义控制词汇表进行命名实体识别(NER)的Java库,而不需要先标记训练数据.我在SE上搜索了一些,但大多数问题都不太明确.
考虑以下用例:
理想情况下,我正在寻找一个项目,该项目使用NRE来建议CMS环境中的交联以便搭载.(我确定wordpress的插件存在例如)不确定Java中是否存在类似的东西.
还欢迎使用与受控自定义词汇表一起使用的NRE库的所有其他更一般的指针.
java information-retrieval named-entity-recognition text-mining
我有一个向量填充以下格式的字符串: <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不能处理前瞻和外观吗?
我试图根据他们的情绪将推文分为三类(买入,持有,卖出).我正在使用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) 在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中的大数据进行文本挖掘tm.
我经常遇到内存问题(例如can not allocation vector of size....)并使用已建立的方法来解决这些问题,例如
memory.limit()为最大值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) 我试图在Gensim中获得LDA模型的最佳主题数.我发现的一种方法是计算每个模型的对数似然,并将每个模型相互比较,例如,使用潜在Dirichlet分配的输入参数
因此,我研究了使用Gensim计算LDA模型的对数似然性,并得出以下文章:您如何估计潜在Dirichlet分配模型的α参数?
这基本上说明update_alpha()方法实现了黄,乔纳森所描述的方法.Dirichlet分布参数的最大似然估计.我仍然不知道如何在不更改代码的情况下使用libary获取此参数.
如何使用Gensim从LDA模型获取对数似然?
有没有更好的方法来获得Gensim的最佳主题数量?
我在我的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)
上面的代码在过滤列中给出了预期结果,但它只删除/停止标准单词.我正在寻找一种方法来添加我自己的自定义列表,该列表将包含我希望过滤的更多单词和数值.