本文重在模型代码运行部分~
附上Github链接:xiaohuiyan / BTM
如果在linux环境下,代码包含 运行示例:
$ cd script
$ sh runExample.sh
windows下可分4步:
第1步: 为文档中的单词建立索引
id从0号开始
python script/indexDocs.py
比如:(进入script路径下)
python .\indexDocs.py api_decs_NN_top10.txt dwid_pt.txt voca_pt.txt
但直接运行可能会报错,因为文件的读写编码,所以要改写下script/indexDocs.py
n(w)为2422
第2步: 主题学习
首先要生成btm.exe文件
我安装的是codeblocks,先设置环境变量“CodeBlocks\MinGW\bin”,再进行g++编译。进入src路径下:
g++ .\infer.cpp .\model.cpp .\main.cpp -o btm
运行:
$ ./src/btm est
运行样例:
.\btm.exe est 10 2422 1 0.01 200 501 ..\script\dwid_pt.txt .\result\
结果将被写入目录 “model_dir”:
- k10.pw_z:P(w | z)的 K * M 矩阵,假设K = 10
- k10.pz:P(z)的 K * 1 矩阵,假设K = 10
第3步:推断文档的主题比例,即P(z|d)
$ ./src/btm inf
如:
.\btm.exe inf sum_b 10 ..\script\dwid_pt.txt .\result\
结果将输出到 “model_dir”:
- k10.pz_d:P(z | d) 的 N*K 矩阵,假设K = 10
第4步:结果显示
说明主题的主题词及其在集合中的比例
python script/topicDisplay.py
可能会出错:编码问题
Traceback (most recent call last):
File ".\topicDisplay.py", line 48, in
voca = read_voca(voca_pt)
File ".\topicDisplay.py", line 12, in read_voca
for l in open(pt):
UnicodeDecodeError: 'gbk' codec can't decode byte 0x99 in position 5363: illegal multibyte sequence
修改对应地方的编码为utf-8
如果感觉参数含义不清楚,多看看 “BTM-master\script” 路径下的 runExample.sh
运行示例:进入script路径下
python .\topicDisplay.py ..\src\NN\ 10 .\voca_pt.txt