我想在消息论坛中为每条消息构建一个约6个关键字(甚至更好:几个单词关键短语)的列表.
有谁知道一个很好的C#库来完成这个?也许有办法让Lucene.NET提供这种信息?
或者,如果不这样做,任何人都可以建议一个算法(或一组算法)来阅读?如果我正在实施自己,我需要的东西不是非常复杂,我只能解决这个问题,如果它在大约一个星期内易于处理.现在,我发现最简单但有效的是TF-IDF.
更新:我上传了使用TF-IDF从真实数据集中选择前5个关键字的结果:http://jsbin.com/oxanoc/2/edit#preview
结果是平庸的,但并非完全无用......也许通过添加检测多词短语,这将是足够好的.
我想基于相似性来聚类文档.
我已经尝试过ssdeep(相似性哈希),非常快但我被告知k-means更快,而且flann是所有实现中最快的,而且更准确所以我尝试使用python绑定但是我找不到任何示例如何在文本上做它(它只支持数组).
我对这个领域非常陌生(k-means,自然语言处理).我需要的是速度和准确性.
我的问题是:
我正在使用tm-package 在R中进行一些文本挖掘.一切都很顺利.但是,在词干之后会出现一个问题(http://en.wikipedia.org/wiki/Stemming).显然,有些词语具有相同的词干,但重要的是它们不会"被拼凑"(因为这些词语意思不同).
有关示例,请参阅下面的4个文本.在这里你不能使用"讲师"或"讲座"("协会"和"联系人")可互换.但是,这是在步骤4中完成的操作.
是否有任何优雅的解决方案如何手动实现某些案例/单词(例如,"讲师"和"讲座"是两个不同的东西)?
texts <- c("i am member of the XYZ association",
"apply for our open associate position",
"xyz memorial lecture takes place on wednesday",
"vote for the most popular lecturer")
# Step 1: Create corpus
corpus <- Corpus(DataframeSource(data.frame(texts)))
# Step 2: Keep a copy of corpus to use later as a dictionary for stem completion
corpus.copy <- corpus
# Step 3: Stem words in the corpus
corpus.temp <- tm_map(corpus, stemDocument, language = "english")
inspect(corpus.temp) …Run Code Online (Sandbox Code Playgroud) 它看起来很容易.但我很困惑.
文本挖掘和信息提取有什么区别?
nlp information-retrieval text-mining information-extraction
我正在开始使用R中的tm软件包,所以请耐心等待,并为大文本墙做道歉.我创造了一个相当大的社会主义/共产主义宣传语料库,并希望提取新创造的政治术语(多个词,例如"斗争 - 批评 - 转型运动").
这是一个两步的问题,一个关于我的代码到目前为止,一个关于我应该如何继续.
第1步:为此,我想首先确定一些常见的ngram.但是我很早就陷入了困境.这是我一直在做的事情:
library(tm)
library(RWeka)
a <-Corpus(DirSource("/mycorpora/1965"), readerControl = list(language="lat")) # that dir is full of txt files
summary(a)
a <- tm_map(a, removeNumbers)
a <- tm_map(a, removePunctuation)
a <- tm_map(a , stripWhitespace)
a <- tm_map(a, tolower)
a <- tm_map(a, removeWords, stopwords("english"))
a <- tm_map(a, stemDocument, language = "english")
# everything works fine so far, so I start playing around with what I have
adtm <-DocumentTermMatrix(a)
adtm <- removeSparseTerms(adtm, 0.75)
inspect(adtm)
findFreqTerms(adtm, lowfreq=10) # find terms …Run Code Online (Sandbox Code Playgroud) 基本上在我的文字中我只想保留名词并删除其他部分的词性.
我认为没有任何自动化的方法.如果有请建议.
如果没有自动化的方法,我也可以手动完成,但为此我需要所有可能的说法,动词或介词或连词或形容词等的列表.有人可以建议一个可能的来源,我可以得到这些特定的列表.
我使用twitteR包从twitter中提取推文并将其保存到文本文件中.
我在语料库上进行了以下操作
xx<-tm_map(xx,removeNumbers, lazy=TRUE, 'mc.cores=1')
xx<-tm_map(xx,stripWhitespace, lazy=TRUE, 'mc.cores=1')
xx<-tm_map(xx,removePunctuation, lazy=TRUE, 'mc.cores=1')
xx<-tm_map(xx,strip_retweets, lazy=TRUE, 'mc.cores=1')
xx<-tm_map(xx,removeWords,stopwords(english), lazy=TRUE, 'mc.cores=1')
Run Code Online (Sandbox Code Playgroud)
(使用mc.cores = 1和lazy = True,否则Mac上的R运行错误)
tdm<-TermDocumentMatrix(xx)
Run Code Online (Sandbox Code Playgroud)
但是这个术语文档矩阵有很多奇怪的符号,无意义的单词等.如果推文是
RT @Foxtel: One man stands between us and annihilation: @IanZiering.
Sharknado‚Äã 3: OH HELL NO! - July 23 on Foxtel @SyfyAU
Run Code Online (Sandbox Code Playgroud)
清理完推文后,我只想留下适当的完整英文单词,即句子/短语无效(用户名,缩短的单词,网址)
例:
One man stands between us and annihilation oh hell no on
Run Code Online (Sandbox Code Playgroud)
(注意:tm包中的转换命令只能删除停用词,标点符号空格以及转换为小写)
标题说明了一切; 我有一个SQL数据库突破接缝与在线对话文本.我已经做了最该项目在Python的,所以我想做到这一点使用Python的NLTK库(除非有强有力的理由不).
数据按线程,用户名和帖子进行组织.每个线程或多或少都侧重于讨论我有兴趣分析的类别的一个"产品".最终,当这个结束时,我希望每个用户对他们在某些时候讨论过的任何产品有一个估计的意见(喜欢/不喜欢某种交易).
那么,我想知道的是:
1)我如何确定每个线程的产品?我正在阅读有关关键字提取的信息...这是正确的方法吗?
2)如何根据帖子确定特定的用户情绪?从我有限的理解,我必须首先"训练"NLTK以识别某些意见指标,然后我只是确定这些单词出现在文本中的背景?
你可能已经猜到了,我以前没有NLP的经验.从我到目前为止的阅读,我认为我可以处理它.如果有人可以指出我正确的方向,即使只是一个基本和粗糙的工作模型现在将是伟大的.谷歌对我没有多大帮助.
PS我有权分析这些数据(如果重要的话)
我搜索了stackoverflow和web,只能找到部分解决方案,或者由于TM或qdap的变化而找不到的部分解决方案.问题如下:
我有一个数据帧:ID和文本(简单文档ID /名称,然后一些文本)
我有两个问题:
第1部分:如何创建tdm或dtm并维护文档名称/ ID?它只在inspect(tdm)上显示"character(0)".
第2部分:我想只保留一个特定的术语列表,即删除自定义停用词的相反.我希望这发生在语料库中,而不是tdm/dtm.
对于第2部分,我使用了一个我在这里得到的解决方案:如何在tm字典中实现邻近规则来计算单词?
这个发生在tdm部分!对于使用"tm_map(my.corpus,keepOnlyWords,customlist)"之类的东西,第2部分是否有更好的解决方案?
任何帮助将不胜感激.非常感谢!
sample1 = read.csv("pirate.csv")
sample1[,7]
[1] >>xyz>>hello>>mate 1
[2] >>xyz>>hello>>mate 2
[3] >>xyz>>mate 3
[4] >>xyz>>mate 4
[5] >>xyz>>hello>>mate 5
[6] >>xyz>>hello>>mate 6
Run Code Online (Sandbox Code Playgroud)
我必须提取并创建一个包含所有单词的数组>>.
这该怎么做?
另外,如何从以下字符串中提取不同变量中的(a)o qwerty,(b)mate1和(c)pirate1
p= '>>xyz- o qwerty>>hello>>mate1>>sole pirate1'
Run Code Online (Sandbox Code Playgroud)
谢谢