我正在开展一个项目,目前能够检测文本正文中何时提到某个主题/想法非常有用.例如,如果文本包含:
也许如果你告诉我一些关于琼斯先生的事情,那会有所帮助.如果我可以描述他的外表,甚至更好的照片,这也会很有用吗?
能够发现这个人要求拍摄琼斯先生的照片真是太棒了.我可以采取一种非常天真的方法,只是寻找"照片"或"照片"这个词,但如果他们写下这样的话,这显然是不好的:
请永远不要给我发一张琼斯先生的照片.
有谁知道从哪里开始这个?它甚至可能吗?
我已经研究了像nltk这样的东西,但我还没有找到一个人做类似事情的例子,我仍然不完全确定这种分析是什么.任何可以让我离开的帮助都会很棒.
谢谢!
我想澄清潜在的Dirichlet分配(LDA)与文档聚类的通用任务之间的关系.
LDA分析倾向于输出每个文档的主题比例.如果我的理解是正确的,这不是文档聚类的直接结果.但是,我们可以将此概率比例视为每个文档的特征代表.之后,我们可以根据LDA分析生成的特征配置调用其他已建立的聚类方法.
我的理解是否正确?谢谢.
我试图从德语文档中提取单词,当我使用nltk教程中描述的以下方法时,我无法获得具有特定语言特殊字符的单词.
ptcr = nltk.corpus.PlaintextCorpusReader(Corpus, '.*');
words = nltk.Text(ptcr.words(DocumentName))
Run Code Online (Sandbox Code Playgroud)
如何获取文档中的单词列表?
nltk.tokenize.WordPunctTokenizer()德语短语的示例Veränderungen über einen Walzer如下:
In [231]: nltk.tokenize.WordPunctTokenizer().tokenize(u"Veränderungen über einen Walzer")
Out[231]: [u'Ver\xc3', u'\xa4', u'nderungen', u'\xc3\xbcber', u'einen', u'Walzer']
Run Code Online (Sandbox Code Playgroud)
在这个例子中,"ä"被视为分隔符,即使"ü"不是.
我正在尝试使用R中的tm包,并且有一个客户反馈的CSV文件,每行都是不同的反馈实例.我想将此反馈的所有内容导入语料库,但我希望每行都是语料库中的不同文档,以便我可以比较DocTerms矩阵中的反馈.我的数据集中有超过10,000行.
最初我做了以下事情:
fdbk_corpus <-Corpus(VectorSource(fdbk), readerControl = list(language="eng"), sep="\t")
Run Code Online (Sandbox Code Playgroud)
这将创建一个包含1个文档和> 10,000行的语料库,我想要> 10,000个文档,每个文档包含1行.
我想我可以在一个文件夹中拥有10,000多个单独的CSV或TXT文档并从中创建一个语料库...但我认为有一个比这更简单的答案,将每一行作为一个单独的文档阅读.
我的目标是自动将反馈电子邮件路由到相应的部门.
我的字段是FNUMBER,CATEGORY,SUBCATEGORY,Description.
我有上述6个月的数据格式 - 整个电子邮件Description与CATEGORY和一起存储SUBCATEGORY.
我必须分析DESCRIPTION列并找到Keywordsfor Each Category/subcategory和下一个反馈电子邮件进入时,它应该根据Keyword历史数据生成自动分类到类别和子类别.
我已将一个XML文件导入R - 用于R中的文本分类,然后将XML转换为带有必填字段的数据框.我有一个特定月份的23017记录 - 我只列出了前20个列作为下面的数据帧.
我有超过100个类别和子类别.
我是文本挖掘概念的新手 - 但是在SO和tm包的帮助下 - 我尝试了下面的代码:
step1 <- structure(list(FNUMBER = structure(1:20, .Label = c(" 20131202-0885 ",
"20131202-0886 ", "20131202-0985 ", "20131202-1145 ", "20131202-1227 ",
"20131202-1228 ", "20131202-1235 ", "20131202-1236 ", "20131202-1247 ",
"20131202-1248 ", "20131202-1249 ", "20131222-0157 ", "20131230-0668 ",
"20131230-0706 ", "20131230-0776 ", "20131230-0863 ", …Run Code Online (Sandbox Code Playgroud) 我试图从我建立的语料库中删除一些单词,但它似乎没有起作用.我首先浏览所有内容并创建一个数据框,按照频率顺序列出我的单词.我使用此列表来识别我不感兴趣的单词,然后尝试创建一个删除了单词的新列表.但是,单词仍保留在我的数据集中.我想知道我做错了什么以及为什么这些话没有被删除?我已经包含以下完整代码:
install.packages("rvest")
install.packages("tm")
install.packages("SnowballC")
install.packages("stringr")
library(stringr)
library(tm)
library(SnowballC)
library(rvest)
# Pull in the data I have been using.
paperList <- html("http://journals.plos.org/plosone/search?q=nutrigenomics&sortOrder=RELEVANCE&filterJournals=PLoSONE&resultsPerPage=192")
paperURLs <- paperList %>%
html_nodes(xpath="//*[@class='search-results-title']/a") %>%
html_attr("href")
paperURLs <- paste("http://journals.plos.org", paperURLs, sep = "")
paper_html <- sapply(1:length(paperURLs), function(x) html(paperURLs[x]))
paperText <- sapply(1:length(paper_html), function(x) paper_html[[1]] %>%
html_nodes(xpath="//*[@class='article-content']") %>%
html_text() %>%
str_trim(.))
# Create corpus
paperCorp <- Corpus(VectorSource(paperText))
for(j in seq(paperCorp))
{
paperCorp[[j]] <- gsub(":", " ", paperCorp[[j]])
paperCorp[[j]] <- gsub("\n", " ", paperCorp[[j]])
paperCorp[[j]] <- gsub("-", " ", paperCorp[[j]])
} …Run Code Online (Sandbox Code Playgroud) 我必须对一些情绪进行分类,我的数据框是这样的
Phrase Sentiment
is it good movie positive
wooow is it very goode positive
bad movie negative
Run Code Online (Sandbox Code Playgroud)
我做了一些预处理作为标记化停止词干...等我得到
Phrase Sentiment
[ good , movie ] positive
[wooow ,is , it ,very, good ] positive
[bad , movie ] negative
Run Code Online (Sandbox Code Playgroud)
我需要最终得到一个数据帧,该行是文本,其值是tf_idf,列是像这样的单词
good movie wooow very bad Sentiment
tf idf tfidf_ tfidf tf_idf tf_idf positive
Run Code Online (Sandbox Code Playgroud)
(其余两条线也一样)
我想创建一个语料库来收集下载的HTML文件,然后在R中读取它们以供将来的文本挖掘.
从本质上讲,这就是我想要做的:
我尝试使用DirSource:
library(tm)
a<- DirSource("C:/test")
b<-Corpus(DirSource(a), readerControl=list(language="eng", reader=readPlain))
Run Code Online (Sandbox Code Playgroud)
但它返回"无效的目录参数"
一次读入来自语料库的html文件.不知道怎么做.
解析它们,将它们转换为纯文本,删除标签.很多人建议使用XML,但是,我找不到处理多个文件的方法.它们都是一个文件.
非常感谢.
我正在尝试清理语料库,我使用了典型的步骤,如下面的代码:
docs<-Corpus(DirSource(path))
docs<-tm_map(docs,content_transformer(tolower))
docs<-tm_map(docs,content_transformer(removeNumbers))
docs<-tm_map(docs,content_transformer(removePunctuation))
docs<-tm_map(docs,removeWords,stopwords('en'))
docs<-tm_map(docs,stripWhitespace)
docs<-tm_map(docs,stemDocument)
dtm<-DocumentTermMatrix(docs)
Run Code Online (Sandbox Code Playgroud)
然而,当我检查矩阵时,几乎没有带引号的单词,例如:"我们""公司""代码指南" - 已知 - 加速
似乎单词本身在引号内,但当我尝试再次运行removePunctuation代码时,它不起作用.前面还有一些带子弹的话我也无法删除.
任何帮助将不胜感激.
我想从我提到的例句中得到bigrams和trigrams.
我的代码适用于bigrams.但是,它不捕获数据中的三元组(例如,人工计算机交互,我的句子的5个位置提到)
方法1下面提到的是我在Gensim中使用短语的代码.
from gensim.models import Phrases
documents = ["the mayor of new york was there", "human computer interaction and machine learning has now become a trending research area","human computer interaction is interesting","human computer interaction is a pretty interesting subject", "human computer interaction is a great and new subject", "machine learning can be useful sometimes","new york mayor was present", "I love machine learning because it is a new subject area", "human computer interaction helps people to get user friendly …Run Code Online (Sandbox Code Playgroud)