标签: corpus

NLP:构建(小)语料库,或"在哪里获得大量不太专业的英语文本文件?"

有没有人建议在哪里可以找到用于小型语料库的档案或日常英语文本集合?我一直在使用古腾堡项目的书籍作为工作原型,并希望融入更多现代语言.一个最近的答案在此间接指出了一个伟大的新闻组电影评论归档,这对我没有发生,而且非常好.对于这个特定的程序,技术usenet档案或编程邮件列表会使结果倾斜并且难以分析,但任何类型的一般博客文本,聊天记录或任何可能对其他人有用的东西都会非常有用.此外,非常感谢部分或可下载的研究语料库,其中没有太多标记,或者用于查找维基百科文章的适当子集或任何其他想法的一些启发式.

(顺便说一句,我是一个很好的公民,没有下载,使用一个故意慢的脚本,对托管这种材料的服务器没有要求,以防你认为道德风险指向我巨大的东西.)

更新:用户S0rin指出维基百科请求不爬行,而是提供此导出工具.Project Gutenberg 在这里指定一个策略,底线,尽量不要抓取,但是如果你需要:"配置你的机器人在请求之间至少等待2秒."

更新2 维基百科转储是要走的路,这要归功于指出它们的回答者.我最终使用的是英文版本:http://download.wikimedia.org/enwiki/20090306/,西班牙文件大小只有一半.它们是一些清理工作,但非常值得,它们在链接中包含许多有用的数据.


nlp linguistics corpus

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

专有名单?

我正在尝试从文本blob中过滤名称.目前我只是生成一个单词列表并手动过滤它但我已经有大约8k字了,所以我正在寻找更好的方法.我可以抓住一本字典并过滤掉它们,但这样可以剔除像史密斯和悬崖这样的名字.

我需要的是以下任何一种:

  • 常用名称列表(我需要> 5k最常见的名称)
  • 一个也恰好是单词的名单

我想他们之间,我可以组合黑名单/白名单来获得我需要的东西.

text filtering classification corpus

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

假审查数据集

互联网上有一些通常邮件垃圾邮件的数据集,但我需要带有虚假评论的数据集进行一些研究,我找不到任何一个.任何人都可以给我建议可以获得虚假评论数据集的地方吗?

nlp corpus review spam

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

从R中的语料库计算单个文档中的单词并将其放入数据框中

我有文本文档,在每个文档中我都有电视剧剧集的文字.每个文件都是不同的系列.我想比较每个系列中最常用的单词,我想我可以使用ggplot绘制它们,并且在一个轴上有'系列1术语至少出现x次',''系列2术语至少出现x次' 另外一个.我希望我需要的是一个包含3列'Terms','Series x','Series Y'的数据帧.系列x和y具有该单词出现的次数.

我尝试了多种方法来做到这一点但失败了.我最接近的是我可以阅读语料库并创建一个包含一列中所有术语的数据框,如下所示:

library("tm")

corpus <-Corpus(DirSource("series"))
corpus.p <-tm_map(corpus, removeWords, stopwords("english"))  #removes stopwords
corpus.p <-tm_map(corpus.p, stripWhitespace)  #removes stopwords
corpus.p <-tm_map(corpus.p, tolower)  
corpus.p <-tm_map(corpus.p, removeNumbers)
corpus.p <-tm_map(corpus.p, removePunctuation)
dtm <-DocumentTermMatrix(corpus.p)
docTermMatrix <- inspect(dtm)
termCountFrame <- data.frame(Term = colnames(docTermMatrix))
Run Code Online (Sandbox Code Playgroud)

然后我知道我可以添加一个列添加如下的单词:

termCountFrame$seriesX <- colSums(docTermMatrix)
Run Code Online (Sandbox Code Playgroud)

但是当我只想要一个时,这会增加两个文件的出现次数.

所以我的问题是:

1)是否可以在单个doc上使用colSums,如果没有,是否有另一种方法可以将doctermmatrix转换为具有每个文档的术语计数的数据帧

2)是否有人知道如何限制这一点,以便我在每个文档中获得最常用的术语

r corpus text-mining dataframe

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

使用AWK中的第一个字段作为文件名

数据集是一个包含三列的大文件:一个部分的ID,一些不相关的内容和一行文本.示例可能如下所示:

A01 001 This is a simple test.
A01 002 Just for exemplary purpose.
A01 003
A02 001 This is another text
Run Code Online (Sandbox Code Playgroud)

我想使用第一列(在此示例中为A01和A02,表示不同的文本)作为文件名,其内容是第二列之后该行中的所有内容.

上面的示例应该会生成两个文件,一个包含名称A01和内容:

This is a simple test.
Just for exemplary purpose.
Run Code Online (Sandbox Code Playgroud)

另一个A02内容如下:

This is another text
Run Code Online (Sandbox Code Playgroud)

我的问题是:

  1. AWK是否适合执行此任务?或者也许有更方便的方法呢?
  2. 这项任务将如何完成?

bash awk corpus

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

我可以控制CountVectorizer在scikit中学习语料库的方式吗?

我正在与scikit学习的CountVectorizer一起工作,我可能正在尝试做一些不是为对象制作的东西......但我不确定.

在获取发生次数方面:

vocabulary = ['hi', 'bye', 'run away!']
corpus = ['run away!']
cv = CountVectorizer(vocabulary=vocabulary)
X = cv.fit_transform(corpus)
print X.toarray()
Run Code Online (Sandbox Code Playgroud)

得到:

[[0 0 0 0]]
Run Code Online (Sandbox Code Playgroud)

我所意识到的是,CountVectorizer会将语料库分解为我认为是unigrams:

vocabulary = ['hi', 'bye', 'run']
corpus = ['run away!']
cv = CountVectorizer(vocabulary=vocabulary)
X = cv.fit_transform(corpus)
print X.toarray()
Run Code Online (Sandbox Code Playgroud)

这使:

[[0 0 1]]
Run Code Online (Sandbox Code Playgroud)

有没有办法告诉CountVectorizer你想要如何矢量化语料库?理想情况下,我希望得到第一个例子的结果.

老实说,但是,我想知道是否有可能在这些方面取得成果:

vocabulary = ['hi', 'bye', 'run away!']
corpus = ['I want to run away!']
cv = CountVectorizer(vocabulary=vocabulary)
X = cv.fit_transform(corpus)
print X.toarray()

[[0 0 1]]
Run Code Online (Sandbox Code Playgroud)

我没有在fit_transform方法的文档中看到太多信息,它只接受一个参数.如果有人有任何想法,我将不胜感激.谢谢!

python nlp corpus text-parsing scikit-learn

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

使用短语而不是单个单词在R中进行主题建模

我正在尝试做一些主题建模,但想要使用存在而不是单个单词的短语

library(topicmodels)
library(tm)
my.docs = c('the sky is blue, hot sun', 'flowers,hot sun', 'black cats, bees, rats and mice')
my.corpus = Corpus(VectorSource(my.docs))
my.dtm = DocumentTermMatrix(my.corpus)
inspect(my.dtm)
Run Code Online (Sandbox Code Playgroud)

当我检查我的dtm时,它将所有的单词分开,但我想要所有的短语在一起,即每个应该有一个列:天空是蓝色的热太阳花黑色的猫蜜蜂老鼠和老鼠

如何使文档术语矩阵识别短语和单词?它们是逗号分隔的

解决方案需要高效,因为我想在大量数据上运行它

r corpus text-mining

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

使用我自己的语料库而不是movie_reviews语料库在NLTK中进行分类

我使用以下代码,并使用NLTK/Python中的电影评论语料库进行分类

import string
from itertools import chain
from nltk.corpus import movie_reviews as mr
from nltk.corpus import stopwords
from nltk.probability import FreqDist
from nltk.classify import NaiveBayesClassifier as nbc
import nltk

stop = stopwords.words('english')
documents = [([w for w in mr.words(i) if w.lower() not in stop and w.lower() not in string.punctuation], i.split('/')[0]) for i in mr.fileids()]

word_features = FreqDist(chain(*[i for i,j in documents]))
word_features = word_features.keys()[:100]

numtrain = int(len(documents) * 90 / 100)
train_set = [({i:(i in tokens) for i in …
Run Code Online (Sandbox Code Playgroud)

nlp classification corpus nltk python-2.7

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

查找文本中的所有位置/城市/地点

如果我有一个包含例如加泰罗尼亚语报纸文章的文本,我怎么能从该文本中找到所有城市?

我一直在寻找用于python的包nltk,我已经下载了加泰罗尼亚语语料库(nltk.corpus.cess_cat).

我现在拥有的:我已经从nltk.download()安装了所有必需的东西.我现在所拥有的一个例子:

te = nltk.word_tokenize('Tots els gats son de Sant Cugat del Valles.')

nltk.pos_tag(te)
Run Code Online (Sandbox Code Playgroud)

这个城市是'Sant Cugat del Valles'.我从输出中得到的是:

[('Tots', 'NNS'),
 ('els', 'NNS'),
 ('gats', 'NNS'),
 ('son', 'VBP'),
 ('de', 'IN'),
 ('Sant', 'NNP'),
 ('Cugat', 'NNP'),
 ('del', 'NN'),
 ('Valles', 'NNP')]
Run Code Online (Sandbox Code Playgroud)

NNP似乎表示名字的第一个字母是大写的名词.有没有办法获得地方或城市,而不是所有的名字?谢谢

python text-analysis corpus nltk tagged-corpus

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

在R中使用Quanteda时,从文本语料库中删除非ASCII字符的最佳方法是什么?

我迫切需要.我有一个语料库,我已经转换成一种共同的语言,但有些单词没有正确地转换成英语.因此,我的语料库有非ASCII字符,例如"(U + 00F8)".

我正在使用Quanteda并使用以下代码导入了我的文本:

 EUCorpus <- corpus(textfile(file="/Users/RiohBurke/Documents/RStudio/PROJECT/*.txt"), encodingFrom = "UTF-8-BOM")
Run Code Online (Sandbox Code Playgroud)

我的语料库由166个文档组成.以这种方式将文档导入R中,对于我摆脱这些非ASCII字符的最佳方法是什么?

nlp r corpus tm quanteda

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