很常见的情况,我打赌.你有一个博客或新闻网站,你有很多文章或blags或你称之为的任何东西,你想在每个网站的底部建议其他似乎相关的东西.
让我们假设每个项目的元数据非常少.也就是说,没有标签,类别.视为一大块文本,包括标题和作者姓名.
你如何找到可能相关的文件?
我对实际的算法很感兴趣,而不是现成的解决方案,虽然我可以看看在ruby或python中实现的东西,或者依赖于mysql或pgsql.
编辑:目前的答案还不错,但我想看到更多.对于一两件事,可能有一些非常简单的示例代码.
text information-retrieval machine-learning document-classification
我使用文档术语向量来表示文档集合.我使用TF*IDF来计算每个文档向量的术语权重.然后我可以使用这个矩阵来训练文档分类的模型.
我期待将来对新文档进行分类.但是为了对其进行分类,我需要首先将文档转换为文档术语向量,并且向量也应该由TF*IDF值组成.
我的问题是,如何只用一个文件来计算TF*IDF?
据我所知,TF可以根据单个文档本身计算,但IDF只能用文档集合计算.在我目前的实验中,我实际上计算了整个文档集合的TF*IDF值.然后我使用一些文档作为训练集,其他文档作为测试集.
我突然意识到这似乎不适用于现实生活.
因此,实际上有两种微妙的分类方案:
对于1,我们可以组合所有文档,包括标签和不标签.并获得所有这些TF*IDF.这样,即使我们只使用带有标签的文件进行培训,培训结果仍然会包含没有标签的文件的影响.
但我的情况是2.
假设我从训练集语料库的摘要中获得了关于术语T的以下信息:
我应该如下计算看不见的文件D 的ID的IDF 吗?
IDF(t,D)= log((N + 1)/(n + 1))
如果我在新文档中遇到一个之前没有出现在训练语料库中的术语怎么办?我应该如何计算doc-term向量中的权重?
information-retrieval classification machine-learning text-mining document-classification
我正在阅读有关scfit -learn的TfidfVectorizer 实现,我不明白该方法的输出,例如:
new_docs = ['He watches basketball and baseball', 'Julie likes to play basketball', 'Jane loves to play baseball']
new_term_freq_matrix = tfidf_vectorizer.transform(new_docs)
print tfidf_vectorizer.vocabulary_
print new_term_freq_matrix.todense()
Run Code Online (Sandbox Code Playgroud)
输出:
{u'me': 8, u'basketball': 1, u'julie': 4, u'baseball': 0, u'likes': 5, u'loves': 7, u'jane': 3, u'linda': 6, u'more': 9, u'than': 10, u'he': 2}
[[ 0.57735027 0.57735027 0.57735027 0. 0. 0. 0.
0. 0. 0. 0. ]
[ 0. 0.68091856 0. 0. 0.51785612 0.51785612
0. 0. 0. 0. 0. ]
[ 0.62276601 0. …Run Code Online (Sandbox Code Playgroud) nlp machine-learning feature-extraction document-classification scikit-learn
我的目标是[半]自动将文本分配到不同的类别.每个类别都有一组用户定义的类别和一组文本.理想的算法应该能够从人类定义的分类中学习,然后自动对新文本进行分类.任何人都可以建议这样的算法,也许是实现ше的.NET库吗?
我在一些群体中有一堆已经人为分类的文件.
是否有lda的修改版本,我可以用它来训练模型,然后用它来分类未知文档?
nlp classification machine-learning document-classification lda
在这个问题上,过去2-3周我一直在绞尽脑汁.我有一个多标签(不是多级)的问题,每个样品可以属于多个标签的.
我有大约450万个文本文档作为训练数据,大约100万个作为测试数据.标签大约35K.
我正在使用scikit-learn.对于特征提取我以前使用TfidfVectorizer它没有规模可言,我现在用的HashVectorizer这是更好的,但不是可扩展鉴于我有文件的数量.
vect = HashingVectorizer(strip_accents='ascii', analyzer='word', stop_words='english', n_features=(2 ** 10))
Run Code Online (Sandbox Code Playgroud)
SKlearn提供OneVsRestClassifier,我可以在其中提供任何估算器.对于多标签,我发现LinearSVC和SGDClassifier只能正常工作.根据我的基准,SGD在内存和时间方面都优于LinearSVC.所以,我有这样的事情
clf = OneVsRestClassifier(SGDClassifier(loss='log', penalty='l2', n_jobs=-1), n_jobs=-1)
Run Code Online (Sandbox Code Playgroud)
但是这有一些严重的问题:
classification machine-learning document-classification scikit-learn text-classification
我正在研究A Naive Bayes分类器的实现.编程集体智慧通过将贝叶斯定理描述为:
Pr(A | B) = Pr(B | A) x Pr(A)/Pr(B)
Run Code Online (Sandbox Code Playgroud)
以及与文档分类相关的特定示例:
Pr(Category | Document) = Pr(Document | Category) x Pr(Category) / Pr(Document)
Run Code Online (Sandbox Code Playgroud)
我希望有人可以向我解释这里使用的符号,Pr(A | B)和Pr(A)是什么意思?它看起来像某种功能,但管道是什么意思,等等?(我有点迷路)
提前致谢.
我试图将Text文档分类为多个类别.我的下面的代码工作正常
matrix[[i]] <- create_matrix(trainingdata[[i]][,1], language="english",removeNumbers=FALSE,stemWords=FALSE,weighting=weightTf,minWordLength=3)
container[[i]] <- create_container(matrix[[i]],trainingdata[[i]][,2],trainSize=1:50,testSize=51:100) ,
models[[i]] <- train_models(container[[i]], algorithms=c("MAXENT","SVM"))
results[[i]] = classify_models(container[[i]],models[[i]])
Run Code Online (Sandbox Code Playgroud)
当我尝试下面的代码来获得精度,召回,准确度值:
analytic[[i]] <- create_analytics(container[[i]], results[[i]])
Run Code Online (Sandbox Code Playgroud)
我收到以下错误:
Error in `row.names<-.data.frame`(`*tmp*`, value = c(NA_real_, NA_real_ :
duplicate 'row.names' are not allowed
Run Code Online (Sandbox Code Playgroud)
我Categories的text格式.如果我转换categories成Numeric- 上面的代码工作正常.
是否有工作来保持text格式的类别,并获得精度,召回,准确值.
我的目标是获得多级分类器的精度,召回率,准确度值和混淆矩阵.是否有任何其他包来获取多类文本分类器的上述值(一个与所有)
precision r text-mining document-classification confusion-matrix
我有一个数据库,我根据以下三个字段存储数据:id,text,{labels}.请注意,每个文本都已分配给多个label\tag\class.我想构建一个模型(weka\rapidminer\mahout),它可以推荐\将一堆标签\标签\类分类到给定的文本.
我听说过SVM和朴素贝叶斯分类器,但不确定它们是否支持多标签分类.任何指导我正确方向的东西都非常受欢迎!
我正在使用NLTK来对文档进行分类 - 每个文档有1个标签,有10种类型的文档.
对于文本提取,我正在清理文本(标点删除,html标记删除,小写),删除nltk.corpus.stopwords,以及我自己的停用词集合.
对于我的文档功能,我查看所有50k文档,并按频率(frequency_words)收集前2k个单词,然后为每个文档识别文档中哪些单词也在全局frequency_words中.
然后我将每个文档作为hashmap传递{word: boolean}到nltk.NaiveBayesClassifier(...)中,我对文档总数的测试训练比率为20:80.
我遇到的问题:
谢谢!
text-mining ×4
nlp ×3
scikit-learn ×2
algorithm ×1
bayesian ×1
java ×1
lda ×1
naivebayes ×1
nltk ×1
precision ×1
python ×1
r ×1
statistics ×1
text ×1