标签: text-mining

PubMed文章的全文PDF

在处理项目时,我需要下载和处理PubMed摘要的全文文章,是否有任何实现的代码或工具允许用户输入一组PubMed ID并下载免费的全文文章.非常感谢任何形式的帮助或提示.

pdf nlp text-mining pubmed

5
推荐指数
1
解决办法
4079
查看次数

5
推荐指数
1
解决办法
938
查看次数

解析文章内容的 Wikipedia XML 转储并填充 MySQL 数据库的快速方法是什么?

对于某些文本挖掘应用程序,我需要确定英语维基百科每篇文章中每个单词的频率,并用该数据填充 MySQL 数据库。这个官方页面建议在转储上使用 mwdumper 或 xml2sql,但它们并不能直接满足我的目的(除非有人可以解释它们是如何做到的)。

另一方面,使用WikiExtractor、用于 Python 的 MySQLdb 和本地 MySQL 服务器可以让我完全按照自己的意愿行事,但是速度很慢,以至于需要一个月才能解析整个转储。分析修改后的 WikiExtractor 程序表明,大部分运行时间都用于嵌套正则表达式搜索和我的数据库插入。

理想情况下,我不希望处理文章花费超过几天的时间。我怎样才能有效地做到这一点?

mysql mediawiki wikipedia text-mining

5
推荐指数
1
解决办法
2077
查看次数

最新句子可读性算法

我正在研究一种估算句子难度的算法,但是我发现的方法似乎太老了,无法利用现代计算机的功能。

今天使用的算法大部分是在40到60年前开发的。Flesch-Kincaid是最受欢迎的,并且仍被国防部以及许多州和企业用作文档标准。我看过Flesch-Kincaid等级水平,Gunning Fog指数,SMOG指数,Fry可读性公式和Coleman-Liau指数。

我决定使用自动可读性索引:

ARI = 4.71 * (characters / words) + .5 * (words / sentences) - 21.43;
Run Code Online (Sandbox Code Playgroud)

在我看来,基于基于语料库的词频列表为每个词分配一个值,然后将这些值用于旧的可读性公式,这似乎并不困难。
可以针对前1000至5000个最常见的单词执行此操作。为某些不同种类的单词和词性制作单独的列表可能也很有效。连词的出现肯定是句子复杂的标志。

有什么公式可以做到这一点吗?

nlp machine-learning text-mining

5
推荐指数
1
解决办法
379
查看次数

使用nltk的python对称单词矩阵

我正在尝试从文本文档创建对称的单词矩阵.

例如:text ="Barbara很好.Barbara是Benny的朋友.Benny很糟糕."

我使用nltk对文本文档进行了标记.现在我想计算同一句话中出现的其他单词的次数.从上面的文字,我想在下面创建矩阵:

        Barbara good    friends Benny   bad
Barbara 2   1   1   1   0
good    1   1   0   0   0
friends 1   0   1   1   0
Benny   1   0   1   2   1
bad     0   0   1   1   1
Run Code Online (Sandbox Code Playgroud)

请注意,对角线是单词的频率.因为芭芭拉和芭芭拉一起经常出现在巴巴拉的句子中.我希望不要超过,但如果代码变得太复杂,这不是一个大问题.

python text-mining nltk

5
推荐指数
1
解决办法
2763
查看次数

在R中删除过于常见的单词(出现在80%以上的文档中)

我正在使用'tm'包来创建语料库.我已经完成了大部分预处理步骤.剩下的就是删除过于常见的单词(超过80%的文档中出现的术语).任何人都可以帮我吗?

dsc <- Corpus(dd)
dsc <- tm_map(dsc, stripWhitespace)
dsc <- tm_map(dsc, removePunctuation)
dsc <- tm_map(dsc, removeNumbers)
dsc <- tm_map(dsc, removeWords, otherWords1)
dsc <- tm_map(dsc, removeWords, otherWords2)
dsc <- tm_map(dsc, removeWords, otherWords3)
dsc <- tm_map(dsc, removeWords, javaKeywords)
dsc <- tm_map(dsc, removeWords, stopwords("english"))
dsc = tm_map(dsc, stemDocument)
dtm<- DocumentTermMatrix(dsc, control = list(weighting = weightTf, 
                         stopwords = FALSE))

dtm = removeSparseTerms(dtm, 0.99) 
# ^-  Removes overly rare words (occur in less than 2% of the documents)
Run Code Online (Sandbox Code Playgroud)

r text-mining tm

5
推荐指数
2
解决办法
9218
查看次数

文本摘要:如何选择合适的 n-gram 大小

我正在总结文本,使用 nltk 库我能够提取二元组一元组和三元组并按频率对它们进行排序

由于我对这个领域 (NLP) 很陌生,我想知道是否可以使用统计模型来自动选择合适的 Ngrams 大小(我的意思是 N-gram 的长度,一个单词的 unigram,两个字的二元组,或 3 个字的三元组)

例如,假设我有这篇想要总结的文本,作为总结,我将只保留 5 个最相关的 N-gram:

"A more principled way to estimate sentence importance is using random walks 
and eigenvector centrality. LexRank[5] is an algorithm essentially identical 
to TextRank, and both use this approach for document summarization. The two 
methods were developed by different groups at the same time, and LexRank 
simply focused on summarization, but could just as easily be used for
keyphrase extraction or any other NLP …
Run Code Online (Sandbox Code Playgroud)

nlp information-retrieval summary data-mining text-mining

5
推荐指数
1
解决办法
2946
查看次数

如何使用OpenNLP在R中获取POS标签?

这是R代码:

library(NLP) 
library(openNLP)
tagPOS <-  function(x, ...) {
s <- as.String(x)
word_token_annotator <- Maxent_Word_Token_Annotator()
a2 <- Annotation(1L, "sentence", 1L, nchar(s))
a2 <- annotate(s, word_token_annotator, a2)
a3 <- annotate(s, Maxent_POS_Tag_Annotator(), a2)
a3w <- a3[a3$type == "word"]
POStags <- unlist(lapply(a3w$features, `[[`, "POS"))
POStagged <- paste(sprintf("%s/%s", s[a3w], POStags), collapse = " ")
list(POStagged = POStagged, POStags = POStags)}
str <- "this is a the first sentence."
tagged_str <-  tagPOS(str)
Run Code Online (Sandbox Code Playgroud)

输出是:

tagged_str $ POStagged [1]"this/DT is/VBZ a/DT the/DT first/JJ sentence/NN ./."

现在我想从上面的句子中只提取NN单词即句子,并希望将其存储到变量中.任何人都可以帮我解决这个问题.

nlp r text-mining pos-tagger opennlp

5
推荐指数
2
解决办法
1万
查看次数

使用ChatBot订购电影票

我的问题与我刚刚开始研究的项目有关,而且它是一个ChatBot.

我想要构建的机器人有一个非常简单的任务.它必须自动化购买电影票的过程.这是非常接近的域,并且机器人具有对影院数据库的所有必需访问权.当然,如果用户消息与订购电影票的过程无关,那么机器人可以像"我不知道"那样回答.

我已经创建了一个简单的演示,只是为了向少数人展示它,看看他们是否对这样的产品感兴趣.该演示使用简单的DFA方法和一些简单的文本匹配与词干.我在一天内入侵了它,结果发现用户对他们能够成功订购他们想要的门票感到印象深刻.(该演示使用与影院数据库的连接,为用户提供所需的所有信息,以便订购他们想要的门票).

我目前的目标是创建下一个版本,一个更高级的版本,特别是在自然语言理解方面.例如,演示版本要求用户在单个消息中仅提供一个信息,并且无法识别他们是否提供了更多相关信息(例如电影标题和时间).我读到这里有用的技术被称为"帧和插槽语义",它似乎很有希望,但我还没有找到有关如何使用这种方法的任何细节.

而且,我不知道哪种方法最适合改善自然语言理解.在大多数情况下,我考虑:

  1. 使用"标准"NLP技术以更好地理解用户消息.例如,同义词数据库,拼写纠正,词性标签,训练一些基于统计的分类器来捕捉相似性和单词之间的其他关系(如果可能的话,在整个句子之间?)等.
  2. 使用AIML为会话流建模.我不确定在这样一个封闭的领域中使用AIML是否是个好主意.我从来没有用过它,所以这就是我要问的原因.
  3. 使用更"现代"的方法并使用神经网络训练用于用户消息分类的分类器.但是,它可能需要大量标记数据
  4. 我不知道的任何其他方法?

哪种方法最适合我的目标?

你知道在哪里可以找到更多有关"框架和插槽语义"如何工作的资源吗?在谈到框架和插槽方法时,我指的是斯坦福的PDF.

nlp machine-learning text-mining chatbot

5
推荐指数
1
解决办法
809
查看次数

如何使用tf-idf对新文档进行分类?

如果我使用TfidfVectorizerfrom sklearn生成特征向量为:

features = TfidfVectorizer(min_df=0.2, ngram_range=(1,3)).fit_transform(myDocuments)

然后,我将如何生成特征向量以对新文档进行分类?由于您无法为单个文档计算tf-idf。

用以下方法提取特征名称是否正确?

feature_names = TfidfVectorizer.get_feature_names()

然后根据feature_names?计算新文档的术语频率。

但是,那么我将不会获得具有单词重要性信息的权重。

python text-analysis text-mining tf-idf scikit-learn

5
推荐指数
1
解决办法
2024
查看次数