我刚刚阅读了一篇关于MALLET如何用于主题建模的精彩文章,但我在网上找不到MALLET和NLTK之间的任何内容,我已经有过一些经验.
它们之间的主要区别是什么?MALLET是一个更"完整"的资源(例如,有更多的工具和算法)?或者回答前两个问题的一些好文章在哪里?
我正在尝试在Java中运行Mallet并且收到以下错误.
Couldn't open cc.mallet.util.MalletLogger resources/logging.properties file.
Perhaps the 'resources' directories weren't copied into the 'class' directory.
Continuing.
Run Code Online (Sandbox Code Playgroud)
我正试图从Mallet的网站(http://mallet.cs.umass.edu/topics-devel.php)运行这个例子.以下是我的代码.任何帮助表示赞赏.
package scriptAnalyzer;
import cc.mallet.util.*;
import cc.mallet.types.*;
import cc.mallet.pipe.*;
import cc.mallet.pipe.iterator.*;
import cc.mallet.topics.*;
import java.util.*;
import java.util.regex.*;
import java.io.*;
public class Mallet {
public static void main(String[] args) throws Exception {
String filePath = "C:/mallet/ap.txt";
// Begin by importing documents from text to feature sequences
ArrayList<Pipe> pipeList = new ArrayList<Pipe>();
// Pipes: lowercase, tokenize, remove stopwords, map to features
pipeList.add( new …
Run Code Online (Sandbox Code Playgroud) 我正在尝试使用Mallet 2.0.7执行LDA主题建模.根据训练课程的输出,我可以训练LDA模型并获得良好的结果.此外,我可以使用该过程中内置的inferencer,并在重新处理我的训练文件时获得类似的结果.但是,如果我从较大的训练集中获取单个文件,并使用推理器处理它,我会得到非常不同的结果,这是不好的.
我的理解是推理器应该使用固定模型,并且只有该文档的本地特征,所以我不明白为什么在处理1个文件或我的训练集中的1k时会得到任何不同的结果.我没有做频率截止,这似乎是一种具有这种效果的全局操作.你可以在下面的命令中看到我正在使用的其他参数,但它们大部分都是默认的.将迭代次数更改为0或100没有帮助.
导入数据:
bin/mallet import-dir \
--input trainingDataDir \
--output train.data \
--remove-stopwords TRUE \
--keep-sequence TRUE \
--gram-sizes 1,2 \
--keep-sequence-bigrams TRUE
Run Code Online (Sandbox Code Playgroud)
培养:
time ../bin/mallet train-topics
--input ../train.data \
--inferencer-filename lda-inferencer-model.mallet \
--num-top-words 50 \
--num-topics 100 \
--num-threads 3 \
--num-iterations 100 \
--doc-topics-threshold 0.1 \
--output-topic-keys topic-keys.txt \
--output-doc-topics doc-topics.txt
Run Code Online (Sandbox Code Playgroud)
培训期间分配给一个文件的主题,特别是#14是关于正确的葡萄酒:
998 file:/.../29708933509685249 14 0.31684981684981683
> grep "^14\t" topic-keys.txt
14 0.5 wine spray cooking car climate top wines place live honey sticking ice prevent collection market …
Run Code Online (Sandbox Code Playgroud) 当我在主题建模开发人员指南中尝试示例代码时,我真的想了解该代码输出的含义.
首先在运行过程中,它给出:
Coded LDA: 10 topics, 4 topic bits, 1111 topic mask
max tokens: 148
total tokens: 1333
<10> LL/token: -9,24097
<20> LL/token: -9,1026
<30> LL/token: -8,95386
<40> LL/token: -8,75353
0 0,5 battle union confederate tennessee american states
1 0,5 hawes sunderland echo war paper commonwealth
2 0,5 test including cricket australian hill career
3 0,5 average equipartition theorem law energy system
4 0,5 kentucky army grant gen confederates buell
5 0,5 years yard national thylacine wilderness parks …
Run Code Online (Sandbox Code Playgroud) 我试图根据MALLET训练的主题模型推断出文档的主题.我在mallet目录中使用以下命令
./mallet infer-topics --inferencer topic-model --input indata.mallet --output-doc-topics infered_docs
但它在演员异常中陷入困境:
java.lang.ClassCastException: cc.mallet.topics.ParallelTopicModel cannot be cast to cc.mallet.topics.TopicInferencer
我该怎么解决这个问题?
哪种产品(Mallet或Weka)更适合文本分类任务:
我是这个问题的新手,所以任何评论都会很棒
我想在我的Java中编译mallet(而不是使用命令行),所以我在我的项目中包含jar,并引用示例的代码:http://mallet.cs.umass.edu/topics-devel. PHP的,但是,当我运行此代码,有错误:
Exception in thread "main" java.lang.NoClassDefFoundError: gnu/trove/TObjectIntHashMap
at cc.mallet.types.Alphabet.<init>(Alphabet.java:51)
at cc.mallet.types.Alphabet.<init>(Alphabet.java:70)
at cc.mallet.pipe.TokenSequence2FeatureSequence.<init> (TokenSequence2FeatureSequence.java:35)
at mallet.TopicModel.main(TopicModel.java:25)
Caused by: java.lang.ClassNotFoundException: gnu.trove.TObjectIntHashMap
at java.net.URLClassLoader$1.run(Unknown Source)
at java.net.URLClassLoader$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
... 4 more
Run Code Online (Sandbox Code Playgroud)
我不确定导致错误的原因.有人可以帮忙吗?
package mallet;
import cc.mallet.util.*;
import cc.mallet.types.*;
import cc.mallet.pipe.*;
import cc.mallet.pipe.iterator.*;
import cc.mallet.topics.*;
import java.util.*;
import java.util.regex.*;
import java.io.*;
public class TopicModel {
public static void main(String[] args) throws Exception { …
Run Code Online (Sandbox Code Playgroud) 我正在为Mallet寻找一些好的文档,特别是它与主题建模相关的类.我查看了Java文档,但它们没有太大帮助.例如:
estimate
public void estimate()
throws java.io.IOException
Throws:
java.io.IOException
Run Code Online (Sandbox Code Playgroud)
仍然不知道这种方法的作用(如果你这样做,请告诉我).此外,如果您有使用mallet的经验并且可以帮助我打印主题模型(或代表主题的单词组)所学的主题,请告诉我.欢迎所有建议!
我已经看过方法getTopWords,但我还没能把它称为...也许是一个mising jar?
我正在寻找有关编写/了解MALLET课程的人.我知道它是ML问题的一个很好的工具,现在我尝试实现这里描述的基于CRF的距离算法Andrew McCallum,Kedar Bellare和Fernando Pereira.
作者告诉他们,他们已经将所提出的模型实现为Mallet FST类.令人遗憾的是,java并不是我所熟知的Ruby语言,这就是为什么我有一些问题需要理解如何使用他们的模型,例如哪些类,我坚持缺乏大型Mallet类结构中的文档.
听听一些如何用Mallet实现算法的指导信息会很高兴.
我在尝试访问 jupyter 笔记本中的 gensims mallet 时遇到错误。我在与我的笔记本相同的文件夹中有指定的文件“mallet”,但似乎无法访问它。我尝试从 C 驱动器路由到它,但仍然遇到相同的错误。请帮忙 :)
import os
from gensim.models.wrappers import LdaMallet
#os.environ.update({'MALLET_HOME':r'C:/Users/new_mallet/mallet-2.0.8/'})
mallet_path = 'mallet' # update this path
ldamallet = gensim.models.wrappers.LdaMallet(mallet_path, corpus=bow_corpus, num_topics=20, id2word=dictionary)
result = (ldamallet.show_topics(num_topics=3, num_words=10,formatted=False))
for each in result:
print (each)
Run Code Online (Sandbox Code Playgroud)