Fwd: [SLL:6983] Fwd: 如何利用txt文本生成一个概念图

36 views
Skip to first unread message

Zoom.Quiet

unread,
Mar 8, 2010, 3:06:32 AM3/8/10
to luk...@gmail.com, Python.cn@google, zeuux-python, sociallearnlab
---------- Forwarded message ----------
From: Zoom.Quiet <zoom....@gmail.com>
Date: 2010/3/8
Subject: Fwd: [SLL:6983] Fwd: 如何利用txt文本生成一个概念图
To: Chunlei Zhang <luk...@gmail.com>
Cc: "Python.cn@google" <pyth...@googlegroups.com>, sociallearnlab
<sociall...@googlegroups.com>
体积太大... 将代码移动到:
http://py.kingsoft.net/res/moinmaper.7z

...
> ---------- Forwarded message ----------
> From: Chunlei Zhang <luk...@gmail.com>
> Date: 2010/3/8
> Subject: 如何利用txt文本生成一个概念图
> To: "zoom.quiet" <zoom....@gmail.com>
>
>
> 我现在面临一个问题,就是像把文本处理成概念图
> 本来这个事情可以利用CmapTools实现,但是奈何这个软件不认识中文(中文在图上显示为乱码)
> 所以我想起了zoom.quiet 的文章了
>
moinmaper
|-- cfg.py
|-- data
|-- moinmaper-circo.png  使用dot 各种工具输出的图谱
|-- moinmaper-dot.png
|-- moinmaper-fdp.png
|-- moinmaper-neato.png
|-- moinmaper-twopi.png
|-- moinmaper.dot    最后自动生成的 .dot 图形脚本
|-- moinmaper.map    这是可以配合 html 生成可点击图片的热区定义
|-- moinmaper.py    唯一的分析脚本!
|-- moinutil        从MoinMoin 中选取的相关工具脚本
`-- tpl             进行生成 .dot 的简单模板

生成的效果如附件,所有关键代码和测试数据也都在 .7z 压缩包中了
这是对一个类似 http://wiki.woodpecker.org.cn/moin/ 的维基所有文章进行分析,
生成的一个文章关系图谱,
因为文章级别太多,所以使用关联线的粗细和颜色,配合标明了层级,
类似:
[style="setlinewidth(0.8)",color="#335533"];
就是要求当前关系的连接线宽为 0.8 颜色是 #335533

> 数据文件:language2.txt(见附件)
> 内容如下:
> Spoken Language    is a    English

如果仅仅是将这种每行为一 3元论断 的内容解析成关联图,
使用 Py 批量分析,统计后生成 .dot 是非常轻松的事儿...
俺这儿只是举例了一个复杂的维基文章分析实例,
具体的看怎么協助,或是自行完成对应脚本了...

> Body language    is a    nod
> Written Language    can be    written
> Language    is a    Body language
> Body language    need    body movement
> Written Language    is a    painting
> Language    is a    Written Language
> Written Language    is a    symbol
> Language    is a    Spoken Language
> Spoken Language    can be    spoken
> Spoken Language    is a    Chinese
> Language    has    meaning
> Body language    need    body movement
> Body language    is a    nod
> Written Language    is    abstract
>
> 这里每一行就是一个节点——关系——节点,但是其中节点有重复,关系词有重复,而且还有完全重复的,我想让重复次数多的关系线变粗,节点变大,生成一张概念图。
>
> 特向ZQ和大家请教!
>
> --
> Chunlei Zhang
> Ph.D. candidate
> Major: Curriculum & Teaching
> Scholar Interests: science education; teacher training ; teacher knowledge;
> tpck; concept map
> Biology Teaching Club:http://sites.google.com/site/bioteahouse/
>
...
> 邮件来自 `SLL`(SocialLearnLab)"教育大发现"邮件列表
> 详情: https://groups.google.com/group/sociallearnlab
> 发言: sociall...@googlegroups.com
> 退订: sociallearnla...@googlegroups.com
> 官网: http://sociallearnlab.org/
> 维基: http://sociallearnlab.org/wiki/
> 工程: http://code.google.com/p/sociallearnlab/

--
http://zoomquiet.org 人生苦短? Pythonic!

moinmaper-dot.png

Can Xue

unread,
Mar 8, 2010, 7:35:05 AM3/8/10
to pyth...@googlegroups.com


在 2010年3月8日 下午4:06,Zoom.Quiet <zoom....@gmail.com>写道:

> 我现在面临一个问题,就是像把文本处理成概念图
> 本来这个事情可以利用CmapTools实现,但是奈何这个软件不认识中文(中文在图上显示为乱码)
> 所以我想起了zoom.quiet 的文章了
>

CmapTools 设好字体即可。Java 字体没有 fallback,很多软件默认用 DejaVu* 当然会中文乱码。

Zoom.Quiet

unread,
Mar 9, 2010, 5:09:23 AM3/9/10
to 吴长城, sociall...@googlegroups.com, Python.cn@google
2010/3/9 吴长城 <chengch...@gmail.com>:
> =====>什么意思,我怎么还没看明白怎么操作呢?ZQ和春雷,再给我解释下,谢谢啦!~

是介绍了个编程的图形化模块,配合Python 可以自如的生成各种关系图,
不是直接人工操作的

Zoom.Quiet

unread,
Mar 10, 2010, 10:15:38 AM3/10/10
to Chunlei Zhang, Python.cn@google, sociallearnlab
2010/3/10 Chunlei Zhang <luk...@gmail.com>:

>> moinmaper
>> |-- cfg.py
>> |-- data
>> |-- moinmaper-circo.png  使用dot 各种工具输出的图谱
>> |-- moinmaper-dot.png
>> |-- moinmaper-fdp.png
>> |-- moinmaper-neato.png
>> |-- moinmaper-twopi.png
>> |-- moinmaper.dot    最后自动生成的 .dot 图形脚本
>> |-- moinmaper.map    这是可以配合 html 生成可点击图片的热区定义
>> |-- moinmaper.py    唯一的分析脚本!
>> |-- moinutil        从MoinMoin 中选取的相关工具脚本
>> `-- tpl             进行生成 .dot 的简单模板
>>
>> 生成的效果如附件,所有关键代码和测试数据也都在 .7z 压缩包中了
>> 这是对一个类似 http://wiki.woodpecker.org.cn/moin/ 的维基所有文章进行分析,
>> 生成的一个文章关系图谱,
>> 因为文章级别太多,所以使用关联线的粗细和颜色,配合标明了层级,
>> 类似:
>> [style="setlinewidth(0.8)",color="#335533"];
>> 就是要求当前关系的连接线宽为 0.8 颜色是 #335533
>>
>> 俺这儿只是举例了一个复杂的维基文章分析实例,
>> 具体的看怎么協助,或是自行完成对应脚本了...
>
> ==>我尝试着找了找,但是不知道应该把我的txt文件放在什么地方才能让它把图片生成出来,我试着运行了一下它提示有一行错误代码,然后我把它注释掉了。但是只有运行就好像成功了。但是图片没有增加,我猜测它是不是给写到.dot文件中去了。现在我视乎明白了,graphviz的作用是把.dot文件变成图片,而Py负责吧txt中的数据统计后放入到.dot文件。

理解,非常正确!


>
>
>> 如果仅仅是将这种每行为一 3元论断 的内容解析成关联图,
>> 使用 Py 批量分析,统计后生成 .dot 是非常轻松的事儿...
>

> 不过这个事对我来说并不轻松,主要是我对Py不熟悉,不知道应该用它的语句写这样的一个统计分析脚本并输出为.dot。
>
这也是俺一直倡议学校教学用Py 的原因,
Py 是唯一一种可以在最短时间里可以拿来解决问题的脚本语言了...
如果急的话,可以将你的典型数据给俺一个样本,有几千行的就成,
说明最主要的几种可能,
以及最终期望的图谱形式,
俺来快速完成一个基础脚本,你就容易自个儿修订使用了...

Zoom.Quiet

unread,
Mar 11, 2010, 5:10:52 AM3/11/10
to sociall...@googlegroups.com, Chunlei Zhang, Python.cn@google
- 100311 快速完成:
- :10 环境整理
- :15 框架完成
- :20 分析完成
- :30 美化图谱,发现逻辑问题
- :40 重构,完成图谱
共: 1:55
快速完成一个原始版本,来不及注释了,
全部代码在:
http://sociallearnlab.googlecode.com/svn/tangle/zoom.quiet/triplemapping

参考:
http://code.google.com/p/sociallearnlab/source/checkout
检出使用

强烈建议使用 Leo
http://wiki.woodpecker.org.cn/moin/LeoEnvironment

来观察代码!

$ python triplemaper.py 100310-sll-sample.txt
生成 .dot
$ dot -Tpng triplemaper.dot -o triplemaper.png
生成图片!

发觉有文字有非常小的差异导致。。。


2010/3/11 leo bnu <bnu...@gmail.com>
>
> 仨儿真是一个助人为乐的好大妈!

>> --

triplemaper.png
2010-03-11-180439_738x509_scrot.png

Chunlei Zhang

unread,
Mar 11, 2010, 8:05:14 AM3/11/10
to Zoom.Quiet, sociall...@googlegroups.com, Python.cn@google
真心谢谢ZQ的热心帮助!!

我尝试时出现了两个问题:
1、用IDLE执行triplemaper.py 没有提示出错,但是也没有生成我期待的dot文件。(我尝试把原来的dot文件放到别处,但是仍然没有新的dot文件生成)
2、我用graphviz把ZQ提供的dot文件转成图片时,发现所有中文都是乱码。

在网上查了一下:graphviz 中文 乱码
原来需要在graphviz dot 中把字体设置一下字体,开始的时候我把找到的字体的英文名输了进去,提示错误。
Error: Could not find/open font XXXX字体 in C:\WINDOWS\FONTS
后来尝试了一下把这个文件夹下的字体文件名,包括后缀放了进去,这下中文不在是乱码了,第二个问题解决了。
我选择的字体是:mingliu.ttc

但是第一个问题,ZQ,我不知道是不是只需要我用Py提供的IDLE执行一下triplemaper.py就可以了,但是生成的dot文件存放在哪呢?



我在windows xp下,

2010/3/11 Zoom.Quiet <zoom....@gmail.com>

方石

unread,
Mar 12, 2010, 4:27:53 AM3/12/10
to pyth...@googlegroups.com
安装Leo时候 出错,提示 python-support > 0.9 


python-support  这是个什么东东??



--
来自: `python-cn`:CPyUG ~ 华蟒用户组 | 发言:pyth...@googlegroups.com
退订: http://tinyurl.com/45a9tb //针对163/qq邮箱:http://tinyurl.com/4dg6hc
详情: https://groups.google.com/group/python-cn
严正: 理解列表! 智慧提问! http://wiki.woodpecker.org.cn/moin/AskForHelp

Chunlei Zhang

unread,
Mar 12, 2010, 6:22:39 AM3/12/10
to pyth...@googlegroups.com


2010/3/12 方石 <daqi...@gmail.com>

安装Leo时候 出错,提示 python-support > 0.9


 ==》我下载了一个,在M$ xp上成功安装了,地址:http://sourceforge.net/projects/leo/files/Leo/4.7.1%20final/LeoSetup-4.7.1-final.exe/download

Zoom.Quiet

unread,
Mar 15, 2010, 5:51:26 AM3/15/10
to pyth...@googlegroups.com, sociallearnlab
2010/3/12 Chunlei Zhang <luk...@gmail.com>:

>
>
> 2010/3/12 方石 <daqi...@gmail.com>
>>
>> 安装Leo时候 出错,提示 python-support > 0.9
>>

使用 Leo 仅仅需要先安装 Python;
使用这一分析脚本在 M$ 中,要准备:
- http://www.python.org/ftp/python/2.6.4/ 下载 安装 Python
- http://www.graphviz.org/Download_windows.php 下载 安装 Graphviz
(可选)
- http://sourceforge.net/projects/leo/files/Leo/4.7.1%20final/LeoSetup-4.7.1-final.exe/download
下载安装 Leo
注意!
在 M$ 中的代码编译转换推荐:推荐:偷懒利器 EmEditor - 1-2-3.cnblogs.com - 博客园
http://www.cnblogs.com/1-2-3/archive/2008/05/05/EmEditor-Introduction.html

然后运行 脚本,根据提示,给入参数,
然后使用 dot.exe 生成图谱

相关截屏都在附件了;
相关M$ 中 .dot 文件怎么生成正确的中文,得自个儿摸索一下了,当前,俺这儿没有环境,要测试也只能在虚拟机中...


>
>  ==》我下载了一个,在M$
> xp上成功安装了,地址:http://sourceforge.net/projects/leo/files/Leo/4.7.1%20final/LeoSetup-4.7.1-final.exe/download

--
http://zoomquiet.org 人生苦短? Pythonic!

spx-100315-xp-dot-cmd.png
spx-100315-xp-dot-font.png
spx-100315-xp-dot-utf8-gbk.png
spx-100315-xp-leo.png
spx-100315-xp-py-run.png
spx-100315-xp-utf8-gbk.png

方石

unread,
Mar 15, 2010, 9:43:06 AM3/15/10
to pyth...@googlegroups.com
我是在Ubunut下安装提示 python-support 版本太低信息的!

http://zoomquiet.org 人生苦短? Pythonic!

--

Chunlei Zhang

unread,
Mar 15, 2010, 10:01:58 AM3/15/10
to Zoom.Quiet, sociall...@googlegroups.com, Python.cn@google
我终于摸索出来如何让这个triplemaper.py 生成dot文件了, 其实就是因为我是外行,

只要在windows的运行窗口里 执行triplemaper.py data.txt 就可以,我一直在Python 的IDLE 运行,有不知道把数据文件放到哪,乱弄了好长时间。


2010/3/11 Zoom.Quiet <zoom....@gmail.com>



--

Zoom.Quiet

unread,
Mar 15, 2010, 11:30:34 AM3/15/10
to Chunlei Zhang, sociall...@googlegroups.com, Python.cn@google
2010/3/15 Chunlei Zhang <luk...@gmail.com>:
> 我终于摸索出来如何让这个triplemaper.py 生成dot文件了, 其实就是因为我是外行,
>
呃,这也是M$ 下面开发脚本和 Linux 下最大的不同了,
M$ 下好象运行代码一定要有个界面似的,
Linux/Unix 下面永远可以用命令行直接来,
而Python 也方便在,可以在所有OS 中直接调用,
内置的模块已经可完成绝大多数的日常事儿了..
Reply all
Reply to author
Forward
0 new messages