我需要与正面和负面的单词的列表的权重根据他们是多么的强大和周分配给的话.我有 :
1.)WordNet - 它为每个单词提供+或 - 分数.
2.)SentiWordNet - 给出[0,1]范围内的正负值.
我用几句话检查了这些,
爱 - wordNet给出了名词和动词的0.0,我不知道为什么我认为它至少应该是积极的因素.
压制 - wordNet给出-9.93
- SentiWordNet给出了pos和neg的0.0.(应该是否定的)
休息 - wordNet - 2.488
- SentiWordNet - {pos - 0.125,neg - 0.5}(应为正)
我需要一些帮助来决定使用哪一个.
谢谢.
使用tm包我可以这样做:
c0 <- Corpus(VectorSource(text))
c0 <- tm_map(c0, removeWords, c(stopwords("english"),mystopwords))
Run Code Online (Sandbox Code Playgroud)
mystopwords 是我要删除的附加停用词的向量.
但我找不到使用RTextTools包的等效方法.例如:
dtm <- create_matrix(text,language="english",
removePunctuation=T,
stripWhitespace=T,
toLower=T,
removeStopwords=T, #no clear way to specify a custom list here!
stemWords=T)
Run Code Online (Sandbox Code Playgroud)
是否有可能做到这一点?我真的很喜欢这个RTextTools界面,很遗憾必须回到原点tm.
我有一个文本数据框,如下所示.
> nrow(gettext.df)
[1] 3
> gettext.df
gettext
1 hello,
2 Good to hear back from you.
3 I've currently written an application and I'm happy about it
Run Code Online (Sandbox Code Playgroud)
我想将这些文本数据合并到一个单元格中(进行情感分析),如下所示
> gettext.df
gettext
1 hello, Good to hear back from you. I've currently written an application and I'm happy about it
Run Code Online (Sandbox Code Playgroud)
所以我使用下面的代码折叠了单元格
paste(gettext.df, collapse =" ")
Run Code Online (Sandbox Code Playgroud)
但似乎它使这些文本数据成为一个块(作为一个单词),所以我无法逐字扫描句子.
有没有什么方法可以将这些句子合并为一个句子集合,而不是将其转化为一个大字块?
在过去的几天里,我一直在打破这个.我搜索了所有的SO档案,并尝试了建议的解决方案,但似乎无法让这个工作.我在诸如2000 06,1995 -99等文件夹中有一组txt文档,并且想要运行一些基本的文本挖掘操作,例如创建文档术语矩阵和术语文档矩阵以及基于单词的共同位置进行一些操作.我的脚本适用于较小的语料库,但是,当我使用更大的语料库进行尝试时,它会让我失望.我已经粘贴了一个这样的文件夹操作的代码.
library(tm) # Framework for text mining.
library(SnowballC) # Provides wordStem() for stemming.
library(RColorBrewer) # Generate palette of colours for plots.
library(ggplot2) # Plot word frequencies.
library(magrittr)
library(Rgraphviz)
library(directlabels)
setwd("/ConvertedText")
txt <- file.path("2000 -06")
docs<-VCorpus(DirSource(txt, encoding = "UTF-8"),readerControl = list(language = "UTF-8"))
docs <- tm_map(docs, content_transformer(tolower), mc.cores=1)
docs <- tm_map(docs, removeNumbers, mc.cores=1)
docs <- tm_map(docs, removePunctuation, mc.cores=1)
docs <- tm_map(docs, stripWhitespace, mc.cores=1)
docs <- tm_map(docs, removeWords, stopwords("SMART"), mc.cores=1)
docs <- tm_map(docs, removeWords, stopwords("en"), mc.cores=1)
#corpus creation complete
setwd("/ConvertedText/output") …Run Code Online (Sandbox Code Playgroud) 我用Stanford POS Tagger标记西班牙语文本(通过Python中的NLTK).
这是我的代码:
import nltk
from nltk.tag.stanford import POSTagger
spanish_postagger = POSTagger('models/spanish.tagger', 'stanford-postagger.jar')
spanish_postagger.tag('esta es una oracion de prueba'.split())
Run Code Online (Sandbox Code Playgroud)
结果是:
[(u'esta', u'pd000000'),
(u'es', u'vsip000'),
(u'una', u'di0000'),
(u'oracion', u'nc0s000'),
(u'de', u'sp000'),
(u'prueba', u'nc0s000')]
Run Code Online (Sandbox Code Playgroud)
我想知道在哪里可以找到pd000000,vsip000,di0000,nc0s000,sp000的确切含义?
我有功能在2014-11-01和2015-10-31之间刮掉比特币subreddit中的所有帖子.
但是,我只能提取大约990个帖子,这些帖子可以追溯到10月25日.我不明白发生了什么.在参考https://github.com/reddit/reddit/wiki/API之后,我在每个提取之间包含了一个15秒的Sys.sleep ,但无济于事.
此外,我尝试从另一个subreddit(健身)刮,但它也返回约900个帖子.
require(jsonlite)
require(dplyr)
getAllPosts <- function() {
url <- "https://www.reddit.com/r/bitcoin/search.json?q=timestamp%3A1414800000..1446335999&sort=new&restrict_sr=on&rank=title&syntax=cloudsearch&limit=100"
extract <- fromJSON(url)
posts <- extract$data$children$data %>% dplyr::select(name, author, num_comments, created_utc,
title, selftext)
after <- posts[nrow(posts),1]
url.next <- paste0("https://www.reddit.com/r/bitcoin/search.json?q=timestamp%3A1414800000..1446335999&sort=new&restrict_sr=on&rank=title&syntax=cloudsearch&after=",after,"&limit=100")
extract.next <- fromJSON(url.next)
posts.next <- extract.next$data$children$data
# execute while loop as long as there are any rows in the data frame
while (!is.null(nrow(posts.next))) {
posts.next <- posts.next %>% dplyr::select(name, author, num_comments, created_utc,
title, selftext)
posts <- rbind(posts, posts.next)
after <- posts[nrow(posts),1]
url.next <- paste0("https://www.reddit.com/r/bitcoin/search.json?q=timestamp%3A1414800000..1446335999&sort=new&restrict_sr=on&rank=title&syntax=cloudsearch&after=",after,"&limit=100")
Sys.sleep(15)
extract …Run Code Online (Sandbox Code Playgroud) 我打算对我的数据进行一些数据调整.
情况 - 我有一个有字段的数据country.它包含用户输入的国家/地区名称(可能包含拼写错误或同一国家/地区的不同国家/地区名称,例如美国/美国/美国).我有一个正确的国家/地区名称列表.
我想要的 - 预测它指的是哪个最近的国家.例如 - 如果U.S.给出,那么它将更改为USA(在我们的列表中更正国家名称).
我有什么方法可以使用Java或opennlp或任何其他方法吗?
我有以下文件:
总统诺伯特·拉姆特博士:我宣布会议开幕.
我现在请Bundesminister Alexander Dobrindt发言.
(CDU/CSU的掌声和社民党的代表)
运输和数字基础设施部长Alexander Dobrindt:
女士们,先生们.我们今天将开始对有史以来最大的基础设施投资,超过2700亿欧元,超过1000个项目和明确的融资视角.
(Volker Kauder [CDU/CSU]:Genau!)
(CDU/CSU和SPD的掌声)
当我阅读那些.txt文档时,我想创建一个第二列,指示说话者姓名.
所以我尝试的是首先创建一个包含所有可能名称的列表并替换它们.
library(qdap)
members <- c("Alexander Dobrindt, Minister for Transport and Digital Infrastructure:","President Dr. Norbert Lammert:")
members_r <- c("@Alexander Dobrindt, Minister for Transport and Digital Infrastructure:","@President Dr. Norbert Lammert:")
prok <- scan(".txt", what = "character", sep = "\n")
prok <- mgsub(members,members_r,prok)
prok <- as.data.frame(prok)
prok$speaker <- grepl("@[^\\@:]*:",prok$prok, ignore.case = T)
Run Code Online (Sandbox Code Playgroud)
我的计划是获取@和之间的名称:通过正则表达式,如果说话者==真并向下应用它,直到有一个不同的名称(并明显删除所有的掌声/喊叫括号),但这也是我不知道如何我可以做到.
我尝试应用此代码:
pipe = make_pipeline(TfidfVectorizer(min_df=5), LogisticRegression())
param_grid = {'logisticregression__C': [ 0.001, 0.01, 0.1, 1, 10, 100],
"tfidfvectorizer__ngram_range": [(1, 1),(1, 2),(1, 3)]}
grid = GridSearchCV(pipe, param_grid, cv=5)
grid.fit(text_train, Y_train)
scores = grid.cv_results_['mean_test_score'].reshape(-1, 3).T
# visualize heat map
heatmap = mglearn.tools.heatmap(
scores, xlabel="C", ylabel="ngram_range", cmap="viridis", fmt="%.3f",
xticklabels=param_grid['logisticregression__C'],
yticklabels=param_grid['tfidfvectorizer__ngram_range'])
plt.colorbar(heatmap)
Run Code Online (Sandbox Code Playgroud)
但我有这个错误:
AttributeError: 'GridSearchCV' object has no attribute 'cv_results_'
Run Code Online (Sandbox Code Playgroud) 我正在使用most_similar()下面的方法来获取与给定单词相似的所有单词:
word,score= model.most_similar('apple',topn=sizeofdict)
Run Code Online (Sandbox Code Playgroud)
AFAIK,它的作用是计算给定单词与字典中所有其他单词之间的余弦相似度。当我检查单词和分数时,我可以看到列表中有负分的单词。这是什么意思?它们是与给定单词具有相反含义的单词吗?
此外,如果它使用余弦相似度,它如何获得负值?两个文档的余弦相似度在 0-1 之间变化。
text-mining ×10
r ×5
nlp ×2
python ×2
tm ×2
gensim ×1
java ×1
merge ×1
opennlp ×1
reddit ×1
scikit-learn ×1
stanford-nlp ×1
stop-words ×1
web-scraping ×1
word2vec ×1
wordnet ×1