我想从Python中访问一个Perl库.我怎么用呢?
仅供参考,该软件是NCleaner.我想在Python中使用它来将HTML字符串转换为文本.(是的,我知道aaronsw的Python html2text.NCleaner更好,因为它删除了样板.)
我不想将Perl程序作为脚本运行并重复调用它,因为它有一个昂贵的初始加载时间而且我多次调用它.
我正在使用Latent Dirichlet Allocation和来自六个不同来源的新闻数据集.我对主题演变,出现感兴趣,并希望比较各种来源是如何相似的,并且随着时间的推移彼此不同.我知道有许多修改过的LDA算法,例如Author-Topic模型,Topics Over Time,等等.
我的问题是这些备用模型规范中很少有以任何标准格式实现.有些是Java版本,但大多数仅作为会议论文存在.我自己实现其中一些算法的最佳方法是什么?我非常精通R和jags,并且在给出足够长的时间内可以在Python中绊倒.我愿意编写代码,但我真的不知道从哪里开始,我不知道C或Java.我可以使用手稿中的公式在JAGS或Python中构建模型吗?如果是这样,有人能指出我这样做的一个例子吗?谢谢.
我使用该readChar()函数将文本读入R中.我的目的是检验这样一个假设,即文本的句子出现的字母"a"与字母"b"的出现次数一样多.我最近发现了这个{stringr}软件包,这对我的文本做了很多有用的事情,比如计算字符数和整个文本中每个字母的出现次数.现在,我需要知道整篇文章中的句子数量.R有任何功能,可以帮我做到吗?非常感谢你!
在tm文本挖掘R包的源代码中,在文件transform.R中,有一个removePunctuation()函数,当前定义为:
function(x, preserve_intra_word_dashes = FALSE)
{
if (!preserve_intra_word_dashes)
gsub("[[:punct:]]+", "", x)
else {
# Assume there are no ASCII 1 characters.
x <- gsub("(\\w)-(\\w)", "\\1\1\\2", x)
x <- gsub("[[:punct:]]+", "", x)
gsub("\1", "-", x, fixed = TRUE)
}
}
Run Code Online (Sandbox Code Playgroud)
我需要从科学会议中解析并挖掘一些摘要(从他们的网站上获取为UTF-8).摘要包含一些需要删除的unicode字符,特别是在字边界处.有通常的ASCII标点字符,但也有一些Unicode破折号,Unicode引号,数学符号......
文本中还有URL,标点符号中需要保留字符标点符号.tm的内置removePunctuation()功能太激进了.
所以我需要一个自定义removePunctuation()功能来根据我的要求进行删除.
我的自定义Unicode函数现在看起来像这样,但它不能按预期工作.我很少使用R,因此在R中完成任务需要一些时间,即使对于最简单的任务也是如此.
我的功能:
corpus <- tm_map(corpus, rmPunc = function(x){
# lookbehinds
# need to be careful to specify fixed-width conditions
# so that it can be used in lookbehind
x <- …Run Code Online (Sandbox Code Playgroud) 我正在使用优秀的scikit-learn模块进行一些文本挖掘.我正在尝试对科学摘要进行聚类和分类.
我正在寻找一种方法来聚集我的tf-id表示集,而不必事先指定簇的数量.我无法找到一个可以做到这一点的好算法,并且仍能正确处理大型稀疏矩阵.我一直在研究使用scikit-learn的kmeans,但它无法确定最佳簇数(例如使用BIC).我也尝试使用高斯混合模型(使用最佳BIC分数来选择模型),但它们非常慢.
在我对文档进行聚类之后,我希望能够查看每个聚类的主题,这意味着他们倾向于使用的词.在给定数据矩阵和集群标签的情况下,有没有办法提取这些信息?也许采用聚类的均值并使用tf-id-vectorizer对其进行逆变换?我之前曾尝试使用卡方和随机森林对特征重要性进行排名,但这并不是说哪个标签类使用了什么.
我尝试使用NMF分解方法(仅使用scikit-learn网站的示例代码)进行主题检测.它工作得很好,很快就产生了非常有意义的话题.但是,我没有找到一种方法来使用它将每个数据点分配给一个集群,也没有自动确定"最佳"集群数.但这是我正在寻找的那种东西.
我还在某处读到,可以直接从适合的LDA模型中提取主题信息,但我不明白它是如何完成的.由于我已经将LDA实现为基线分类器和可视化工具,因此这可能是一个简单的解决方案.
如果我设法生成有意义的集群/主题,我将把它们与一些人造标签(不是基于主题的)进行比较,看看它们是如何对应的.但这是另一个主题的主题:-)
我设法评估给定语料库的tf-idf函数.如何找到每个文档的停用词和最佳单词?我理解给定单词和文档的低tf-idf意味着它不是选择该文档的好词.
我对数据聚类的数据预处理需要词性(POS)标记.我想知道C#中是否有一些库准备就绪.
假设我已从论坛中收集了帖子.然后我删除了所有用户名和签名,所以现在我只知道哪个帖子在哪个帖子中但不是谁发布了什么,甚至有多少作者(尽管作者的数量明显不能大于文本的数量) .
我想使用马尔可夫模型(看看哪些单词/字母跟随哪些)来弄清楚有多少人使用过这个论坛,哪些帖子是由同一个人写的.为了大大简化,也许一个人倾向于说"他是",而另一个人倾向于说"他是" - 我说的是模型与这种基本逻辑一起工作.
请注意数据有一些明显的问题:有些帖子可能很短(一个单词答案).它们可能是重复的(引用彼此或使用流行的论坛流行语).个别文本不是很长.
有人可能会怀疑一个人连续发帖很少,或者很可能人们更有可能在他们已发布的帖子中发帖.利用这个是可选的.
我们假设帖子是明文,没有标记,论坛上的每个人都使用英语.
我想获得的所有文本的距离矩阵T_i,从而D_ij是文字的可能性T_i和文字T_j是由同一作者写的,基于文字/字符模式.我打算使用这个距离矩阵来聚类文本,并提出诸如"撰写本文的人撰写了哪些其他文本?"之类的问题.
我将如何实际实现这一目标?我需要隐藏的MM吗?如果是这样,隐藏的状态是什么?我理解如何在文本上训练MM然后生成类似的文本(例如,在仙境中生成爱丽丝)但是在我训练频率树之后,我如何用它检查文本以获得它生成的概率那棵树?在构建树时,我应该看一下字母或单词吗?
我有一些未贴标签的微博帖子,我想创建一个情绪分析模块.
要做到这一点,我尝试了斯坦福图书馆和Alchemy Api网络服务,但结果不是很好.现在我不想训练我的分类器.
所以我想建议一些图书馆或一些网络服务.我更喜欢经过测试的图书馆.这篇文章的语言是英语.预处理也已完成.
PS
我使用的编程语言是Java EE
java machine-learning data-mining text-mining sentiment-analysis
下面是我输入的pandas数据帧.
我想找到unigrams和bigrams的频率.我期待的样本如下所示
如何使用nltk或scikit学习?
我写了下面的代码,它以字符串作为输入.如何将其扩展到系列/数据框?
from nltk.collocations import *
desc='john is a guy person you him guy person you him'
tokens = nltk.word_tokenize(desc)
bigram_measures = nltk.collocations.BigramAssocMeasures()
finder = BigramCollocationFinder.from_words(tokens)
finder.ngram_fd.viewitems()
Run Code Online (Sandbox Code Playgroud) text-mining ×10
nlp ×3
r ×3
python ×2
scikit-learn ×2
c# ×1
data-mining ×1
java ×1
lda ×1
nltk ×1
pandas ×1
perl ×1
python-2.7 ×1
statistics ×1
stop-words ×1
tf-idf ×1
tm ×1
unicode ×1