标签: text-mining

术语聚类库?

有没有人知道一个开源\免费库,它可以进行术语聚类?

谢谢,yaniv

text-processing information-retrieval text-analysis text-mining

3
推荐指数
1
解决办法
433
查看次数

在MATLAB中聚类文本

我想在MATLAB中对文本进行分层凝聚聚类.说,我有四句话,

I have a pen.
I have a paper. 
I have a pencil.
I have a cat. 
Run Code Online (Sandbox Code Playgroud)

我想对上面四个句子进行聚类,看看哪个更相似.我知道统计工具箱有像pdist测量成对距离,linkage计算聚类相似性等命令.一个简单的代码如:

X=[1 2; 2 3; 1 4];
Y=pdist(X, 'euclidean');
Z=linkage(Y, 'single');
H=dendrogram(Z)
Run Code Online (Sandbox Code Playgroud)

工作正常并返回树形图.

我想知道如上所述我可以在文本上使用这些命令.有什么想法吗 ?


更新:

感谢Amro.读取理解并计算字符串之间的距离.代码如下:

clc
S1='I have a pen'; % first String

f_id=fopen('events.txt','r'); %saved strings to compare with
events=textscan(f_id, '%s', 'Delimiter', '\n');
fclose(f_id); %close file.
events=events{1}; % saving the text read.

ii=numel(events); % selects one text randomly.
% store the texts in a cell array

for …
Run Code Online (Sandbox Code Playgroud)

matlab cluster-analysis text-mining

3
推荐指数
1
解决办法
8376
查看次数

使用nltk和scikit-learn从文本中为标签云挑选最相关的单词

我想从文本中获取最相关的单词以准备标签云.

我使用scikit-learn包中的CountVectoriser:

cv = CountVectorizer(min_df=1, charset_error="ignore",
    stop_words="english", max_features=200)
Run Code Online (Sandbox Code Playgroud)

这很好,因为它给了我的话和频率:

counts = cv.fit_transform([text]).toarray().ravel()
words = np.array(cv.get_feature_names())
Run Code Online (Sandbox Code Playgroud)

我可以过滤非频繁的单词:

words = words[counts > 1]
counts = counts[counts > 1]
Run Code Online (Sandbox Code Playgroud)

以及单词,即数字:

words = words[np.array(map(lambda x: x.isalpha(), words))]
counts = counts[np.array(map(lambda x: x.isalpha(), words))]
Run Code Online (Sandbox Code Playgroud)

但它仍然不完美......

我的问题是:

  1. 如何过滤掉动词?
  2. 如何完全去除词干以摆脱不同形式的同一个词?
  3. 如何调用CountVectoriser来过滤掉两个字母的单词?

还请注意:

  1. 我很好NLTK但回答诸如"你应该尝试NLTK"不是一个答案,给我一个代码,请.
  2. 我不想使用贝叶斯分类器和其他需要训练模型的技术.我没有时间,我没有训练分类器的例子.
  3. 语言是英语

python data-mining text-mining nltk scikit-learn

3
推荐指数
1
解决办法
2655
查看次数

R tm:巨大的DocumentTermMatrix,如何设置术语频率绑定以提取新的DTM

使用R tm,我有一个术语doc矩阵:

文档术语矩阵(16977术语,29414文档)

非稀疏条目:355000/499006478稀疏度:100%最大术语长度:7加权:术语频率(tf)

为了进一步分析,我必须将术语数限制为2425.

如何通过在例如20以上的频率中包含freq来生成新的dtm?

由于矩阵很大,传统的方法as.matrix不能应用.

谢谢!

r text-mining sparse-matrix bigdata tm

3
推荐指数
1
解决办法
3702
查看次数

基于SVM分类器的文本挖掘

我想使用python nltk将SVM分类应用于文本挖掘目的,并获得精度,回忆准确度不同的测量信息.为此,我预处理数据集并将我的数据集拆分为两个文本文件,即-pos_file.txt(正标签)和neg_file .txt(否定标签).现在我想应用SVM分类器和随机抽样70%用于训练数据,30%用于测试.我看到了scikit-learn的一些文档,但不完全确定我将如何应用它?

pos_file.txt和neg_file.txt都可以被视为单词包.有用的链接 -

示例文件:pos_file.txt

stackoverflowerror restor default properti page string present
multiprocess invalid assert fetch process inform
folderlevel discoveri option page seen configur scope select project level
Run Code Online (Sandbox Code Playgroud)

示例文件:neg_file.txt

class wizard give error enter class name alreadi exist
unabl make work linux
eclips crash
semant error highlight undeclar variabl doesnt work
Run Code Online (Sandbox Code Playgroud)

此外,对unigram,bigram和trigram应用相同的方法会很有趣.期待您的建议或示例代码.

python svm text-mining

3
推荐指数
1
解决办法
6757
查看次数

获取字符串向量元素之间的最小共享部分

有一个字符串向量列表:

xx <- c("concord wanderer basic set air snug beige",
  "concord wanderer basic set air snug black noir", 
  "concord wanderer basic set air snug blue bleu", 
  "concord wanderer basic set air snug brown marron", 
  "concord wanderer basic set air snug green vert", 
   "concord wanderer basic set air snug grey gris", 
   "concord wanderer basic set air snug red rouge", 
   "concord wanderer basic set air snug rose" )
Run Code Online (Sandbox Code Playgroud)

我试图在向量的元素之间获得最小的共享部分,例如,在这里我应该得到:

"concord wanderer basic set air snug"
Run Code Online (Sandbox Code Playgroud)

xx是前一个过程的结果,所以我确信元素之间存在共享部分.但被删除的部分并不总是在他的结尾.

使用strsplit`table我得到这个部分解决方案,但它有点棘手,我放松了原始的单词顺序:

table_x …
Run Code Online (Sandbox Code Playgroud)

string fuzzy-search intersection r text-mining

3
推荐指数
1
解决办法
78
查看次数

文本挖掘中的getText函数是什么?它从何而来?[r]

我正在跟踪Nathan Dannerman和Richard Heimann撰写的来自R的Social Media Mining中的文本挖掘示例:The Book。使用拉鸣叫后searchTwitter的功能,笔者采用sapplylist提取这样的文字部分:

rstats <- searchTwitter("#rstats", n = 1000)

rstats_list <- sapply(rstats, function (x) x$getText())

整齐地制作一个字符矢量,其中仅包含来自推文的文本部分。什么是getText()?我在任何地方都找不到任何东西-作者没有充分解释。我看了看tm包装文件-什么都没有!我在SO上寻找与此相关的问题- 从推文中获取文本回答者在问与我相同的问题。在Inside-R中,我发现了这一点:http : //www.inside-r.org/r-doc/base / gettext,但与getText。有人可以解释我所缺少的吗?

twitter r text-mining tm

3
推荐指数
1
解决办法
2310
查看次数

Python中的re.sub()在替换字符串中的货币值时并不总是有效

我在Python中构建了一个"货币标记器",它标识所有货币表达式并用标记的字符串替换它们.

例如,
替换"I have $20 in my pocket"
"I have <Currency>$20</Currency> in my pocket"

其中一项任务要求我用标记字符串替换标识为Currency的字符串.我正在使用re.sub()这个.

除了"$ 4.4B"或"$ 4.4M"形式外,它适用于各种形式的字符串.

我尝试在我的python控制台中运行简单的示例,发现它re.sub()与具有混合美元模式的模式不一致.

例如,

>>> text = "I have #20 in my pocket"
>>> re.sub("#20", "$20", text)
'I have $20 in my pocket'
>>> text = "I have $20 in my pocket"
>>> re.sub("$20", "#20", text)
'I have $20 in my pocket'
Run Code Online (Sandbox Code Playgroud)

在上面的例子中,您会看到当我尝试将"$ 20"替换为"#20"时,它不起作用(在第二种情况下).

当然,任何帮助都将非常感激.由于这个原因,一个非常愚蠢的虫子出现了并且正在拖延主要工作.

python regex text-mining python-2.7

3
推荐指数
1
解决办法
576
查看次数

无法得到推文的纬度和经度值

我收集了一些推特数据:

#connect to twitter API
setup_twitter_oauth(consumer_key, consumer_secret, access_token, access_secret)

#set radius and amount of requests
N=200  # tweets to request from each query
S=200  # radius in miles

lats=c(38.9,40.7)
lons=c(-77,-74)

roger=do.call(rbind,lapply(1:length(lats), function(i) searchTwitter('Roger+Federer',
                                                                lang="en",n=N,resultType="recent",
                                                              geocode=paste  (lats[i],lons[i],paste0(S,"mi"),sep=","))))
Run Code Online (Sandbox Code Playgroud)

在此之后我完成了:

rogerlat=sapply(roger, function(x) as.numeric(x$getLatitude()))
rogerlat=sapply(rogerlat, function(z) ifelse(length(z)==0,NA,z))  

rogerlon=sapply(roger, function(x) as.numeric(x$getLongitude()))
rogerlon=sapply(rogerlon, function(z) ifelse(length(z)==0,NA,z))  

data=as.data.frame(cbind(lat=rogerlat,lon=rogerlon))
Run Code Online (Sandbox Code Playgroud)

现在我想获得所有具有long和lat值的推文:

data=filter(data, !is.na(lat),!is.na(lon))
lonlat=select(data,lon,lat)
Run Code Online (Sandbox Code Playgroud)

但是现在我只获得了NA值....对这里出了什么问题的任何想法?

r text-mining tm

3
推荐指数
1
解决办法
1453
查看次数

R Tidytext和unnest_tokens错误

对R来说很新,并且已经开始使用tidytext包.

我正在尝试使用参数来输入unnest_tokens函数,这样我就可以进行多列分析.所以不要这样

library(janeaustenr)
library(tidytext)
library(dplyr)
library(stringr)

original_books <- austen_books() %>%
  group_by(book) %>%
  mutate(linenumber = row_number(),
         chapter = cumsum(str_detect(text, regex("^chapter [\\divxlc]",
                                                 ignore_case = TRUE)))) %>%
  ungroup()

original_books

tidy_books <- original_books %>%
              unnest_tokens(word, text)
Run Code Online (Sandbox Code Playgroud)

最后一行代码是:

output<- 'word'
input<- 'text'

tidy_books <- original_books %>%
              unnest_tokens(output, input)
Run Code Online (Sandbox Code Playgroud)

但是我得到了这个:

check_input(x)出错:输入必须是任意长度的字符向量或字符向量列表,每个字符向量的长度为1.

我试过as.character()没有太多运气.

关于这将如何工作的任何想法?

r text-mining

3
推荐指数
1
解决办法
8658
查看次数