惟吾无为 发表于 2013-12-30 01:32:28

我的简单版维基解析引擎qlvwp。beta版

本帖最后由 惟吾无为 于 2014-1-4 15:25 编辑

开源, GPLv2协议. 不会用git. 临时传到百度盘.
下载链接: http://pan.baidu.com/s/1nt7CIRR#dir/path=%2Fqlvwp%2Fqlvwp
重大更新, 2013年12月30日18:24之前下载的请重新下载. 现在windows上使用自带的lua可以直接打开2G大文件了.

本人于1月5日回家, 之后一个半月内没有网络, 期间回复将在元宵后统一处理. (如果过年走亲戚可能提前处理回复下)

-- zip包有份使用说明, 下面都是废话, 可以不看的 --

在linux上使用wine运行mdxbuilder很慢。所以今后我很会少转mdx。但尽力提供数学公式的更新(过年后会尝试加入zhwiki图片更新)


灰色文字于2013年12月30日18:24失效


现在发帖是写注意事项的,我怕明天忘了(话说我一直试图让解析器能直接在windows上运行,结果刚才才发现好几个lua解释器都只能处理2G内的文件。)
0. 所有脚本都在linux下编写测试, 理论上windows能用, 但不做保证. 编辑脚本时请使用utf8编码, unix换行符.
1. 有能力的网友可自行编译支持大文件的lua解释器。否则参考第二条处理。
2. lua解释器只能打开2G内的文件时,请先使用xml分割工具分割,然后拼接。(别用qlvwp自带的分割拼接脚本,依赖lua, 同样不起作用的)




预期的解析器(lvwp)速度太慢,随着我对维基的了解越来越深,才终于发现这是个多么庞大的系统了,3年前的想法如今还是实现不了,所以出现了这个版本。
本版本不再试图实现维基的环境,而是保证速度,尽量针对性地人工实现一部分功能(到时模板就是直接运行对应函数,而非处理Template空间的对应页面了)。
qlvwp包括解析器(quick_wiki_parser.lua)和数学公式转换器(convformula.lua)。并额外提供了wiki xml的分割工具和文本合并工具以及xml索引工具及单个词条提取工具。

转换策略如下:
1. 先用数学公式转换器生成数学公式对照文件。(到时可使用我提供的对照文件可跳过此步. 记住附上对应的图片mdd)
2. 用解析器处理维基标记文本。(读取数学公式对照文件来确定数学公式的图片名)
*** 提示: 解析器限于lua, 只能使用单核, 如果你是多核电脑又很赶时间, 可先分割成多个小文件, 然后开多个进程来处理它们.

功能对比.图例:√实现 ×未实现○小部分实现 ◎大部分实现

功能|关键字|qlvwp|mediawiki
粗体/斜体|'''/''| √|√
链接|[...]/[[...]]|○1|√
表格|{\|...\|}|√|√
公式|<math>|√|√
模板|{{...}}|×2|√
列表|(空格)*#;:-|√|√
标题|=...=|◎3|√
图片|[]|○4|√
nowiki|<nowiki>/<pre>|√|√
引用|<ref>|×|√
相册|<gallary>|×|√
字词转换|-{...}-|×5|√
更多特性未支持...

注释:
1. 基础的web外接, 站内链接实现了. 图片链接直接返回原始文件名. 跨站链接未处理(转储文件从0.7版好像都没了), 姊妹项目未处理. 分类链接未处理. 就记得这些了...
2. 暂时显示出模板名和所有参数. 可用css屏蔽整个模板块, 或仅屏蔽参数块.
3. 给标题们加id锚点了, 非url字符使用维基的.XX格式. 但没有生成索引. 需要的话我下次写.
4. 图片链接只返回文件名, 其他的都丢弃了.
5. 暂时没有字词转换. 今后可能实现, 可能不. 同胞們學習下正體中文唄.

界面都是命令行。理论上cmd下亦可运行,未测试。
使用说明见usage.txt

惟吾无为 发表于 2013-12-30 01:33:23

buglist

本帖最后由 惟吾无为 于 2013-12-30 14:54 编辑

今日之前的log(2#): https://www.pdawiki.com/forum/thread-11549-1-2.html
------
20131230.
bug1. 部分表格没有转换. (数学)

bug2. 连续的标题(=)只转换了第一个? (化學元素)

bug3. 有些公式没转换(数学, "-2, \frac{2}{3}, 1.21\,\!")

惟吾无为 发表于 2013-12-30 01:34:14

本帖最后由 惟吾无为 于 2013-12-30 12:40 编辑

备用楼结束标记...
------
速度不错.
vuuv@mypc:/dev/shm$ lua qlvwp/quick_wiki_parser.lua out=/mnt/data/wiki/zhwiki20131221.txt hash=/mnt/data/wiki/zhwiki20131221.math.txt /mnt/files/downloads/zhwiki-20131221-pages-articles.xml
loading formula hash ... 75886
write file:        /mnt/data/wiki/zhwiki20131221.txt       
        setvbuf:        true
now open dumps:
4418894256      /mnt/files/downloads/zhwiki-20131221-pages-articles.xml
total filesize: 4418894256 (4.1G)
100.00% | time:27m43s,      0s | page write:1242092 drop:1094643

spoony1971 发表于 2013-12-30 07:46:01

可不可留个选项,不转换数学公式,直接输出latex文字版。我觉得将公式留给renderer做更干净一些。

惟吾无为 发表于 2013-12-30 11:07:55

本帖最后由 惟吾无为 于 2013-12-30 11:20 编辑

spoony1971 发表于 2013-12-30 07:46 static/image/common/back.gif
可不可留个选项,不转换数学公式,直接输出latex文字版。我觉得将公式留给renderer做更干净一些。

转换工具调用texvc.
我这分两步的做法算是有个选项了. 可能需要改下加载对照文件的部分, 支持"deststr\tformula"的格式. 而非之前的"md5 formula"格式.

您说的renderer是指谁?
----

对了, 没找到的公式都会显示原始代码.

hyln9 发表于 2013-12-30 13:19:20

本帖最后由 hyln9 于 2013-12-30 22:24 编辑

前排贺电!非常感谢!

有好多话先留着,这里先补充一句,xml分割恰好可以用我破解的这个https://www.pdawiki.com/forum/thread-11459-1-1.html
支持几十个GB的xml分割,我已经测试过了。
而且功能比较强大
速度是非常快的,不需要预载入,直接开始分割,而且基本不占用硬盘,不影响干别的事。

不知引擎对于多语言支持的如何,比如enwiki?

惟吾无为 发表于 2013-12-30 13:30:53

多转储文件就是为enwiki开发的.
可见2#的参考链接.

spoony1971 发表于 2013-12-30 13:49:20

惟吾无为 发表于 2013-12-30 11:07 static/image/common/back.gif
转换工具调用texvc.
我这分两步的做法算是有个选项了. 可能需要改下加载对照文件的部分, 支持"destst ...

我想用mathjax之类的引擎来处理公式。这样也可以让wiki小一点。

惟吾无为 发表于 2013-12-30 13:52:13

spoony1971 发表于 2013-12-30 13:49 static/image/common/back.gif
我想用mathjax之类的引擎来处理公式。这样也可以让wiki小一点。

那就不指定hash. 然后修改mathjax. 解析class="error math"的span标签.
或者你自己改脚本决定新的class名称.

惟吾无为 发表于 2013-12-30 18:33:46

编译了下最新版的lua, 加入了大文件支持.
已经加入了zip包.

yisdict 发表于 2013-12-30 19:34:36

楼主辛苦了。

https://www.pdawiki.com/forum/data/attachment/album/201312/30/193309lmlmzibiylyscbcm.png

zjzengdongyang 发表于 2014-1-2 22:37:53

貌似楼主可以看一下xowa项目,在sourceforge上。貌似不错,可惜不支持手机,也不能批量导出html。
汉化我都不知道怎么下手,代码超多。楼主可以参考一下它的标签处理和其他的项目处理。

zjzengdongyang 发表于 2014-1-2 22:43:53

我在xowa提交过不少bug,顺便问一下这个程序怎么处理rss,媒体文件(pdf,ogg,mp3,等等),以及带颜色的数学公式,看看help:数学公式,用的标签有点问题,mathjax有一个不支持 。

zjzengdongyang 发表于 2014-1-2 22:47:17

以后支持中文维基字典时注意一下,哪简直就是一个个坑呀,一堆引用站外数据,dump里压根没有。

zjzengdongyang 发表于 2014-1-2 22:50:44

看看https://www.pdawiki.com/forum/forum.php?mod=viewthread&tid=11584&extra=page%3D1%26filter%3Dauthor%26orderby%3Ddateline%26orderby%3Ddateline
7楼

惟吾无为 发表于 2014-1-2 23:55:45

本帖最后由 惟吾无为 于 2014-1-3 00:01 编辑

zjzengdongyang 发表于 2014-1-2 22:43 static/image/common/back.gif
我在xowa提交过不少bug,顺便问一下这个程序怎么处理rss,媒体文件(pdf,ogg,mp3,等等),以及带颜色的数学 ...

现在不会参考其他项目了(何况这个不能导出html). 我已经把维基的格式学的差不多了, 现在尽可能兼容维基并提高解析速度.
由于mdict不能处理多媒体,所以我只会转换图片. 发音不同于音乐, 所以任何音频也不会处理.
数学公式调用texvc处理.
维基字典暂时不会考虑. 等我把维基百科做好了再说.
----

刚才看了下,基于java. 我不懂任何纯面向对象的编程语言.

zjzengdongyang 发表于 2014-1-29 14:26:05

这些解析器扩展标签<categorytree>、<charinsert>、<gallery>、<hiero>、<imagemap>、<inputbox>、<math>、<nowiki>、<poem>、<pre>、<quiz>、<ref>、<references>、<score>、<section>、<source>、<syntaxhighlight>、<templatedata>和<timeline>支持不?好像还有一些html5标签,忘了
在http://zh.wikipedia.org/wiki/Special:%E7%89%88%E6%9C%AC%E4%BF%A1%E6%81%AF
随便问一下,支持分类不?有没有可能从categorylinks.sql中提取?

惟吾无为 发表于 2014-1-30 16:16:45

zjzengdongyang 发表于 2014-1-29 14:26
这些解析器扩展标签、、、、、、、、、、、、、、、、、和支持不?好像还有一些html5标签,忘了
在http:// ...

nowiki pre math已处理
ref和gallery有计划。
其他的等模板解析完成后酌情支持。

惟吾无为 发表于 2014-1-30 16:21:11

分类现在还不知道怎么实现,可能需要数据库参与。目前走的纯Lua路线,调用数据库API就不是纯Lua了。
我有时间再看那个SQL文件的格式,或许这是一个比较简单的实现办法。

zjzengdongyang 发表于 2014-2-11 16:17:30

我曾经想通过导入数据库的方式还原官方的mediawiki,安装了我觉得有关内容的插件。
然后导入数据库,已经导入了十几个小时,结果我复制文件时按了Ctrl+c,但是在终端里按的。.........结果中断,我欲哭无泪啊。
看了看时间,心疼了一下电费,果断放弃。

zjzengdongyang 发表于 2014-2-11 16:22:14

hyln9 发表于 2013-12-30 13:19 static/image/common/back.gif
前排贺电!非常感谢!

有好多话先留着,这里先补充一句,xml分割恰好可以用我破解的这个http://www.pdaw ...

他的这玩意,我根本用不了。本人在xp里琢磨了半个多小时。最后受不了,打开OllyDbg,自己动手,结果我爸回来了,果断关机。

惟吾无为 发表于 2014-2-13 16:12:19

zjzengdongyang 发表于 2014-2-11 16:17 static/image/common/back.gif
我曾经想通过导入数据库的方式还原官方的mediawiki,安装了我觉得有关内容的插件。
然后导入数据库,已经导 ...

哈哈, 我也导过, 也欲哭无泪过, 已然绝望, 所以整这...

hyln9 发表于 2014-2-13 23:31:29

zjzengdongyang 发表于 2014-2-11 16:22 static/image/common/back.gif
他的这玩意,我根本用不了。本人在xp里琢磨了半个多小时。最后受不了,打开OllyDbg,自己动手,结果我爸 ...

你爸?你多大了?{:4_105:}

zjzengdongyang 发表于 2014-2-23 14:07:31

hyln9 发表于 2014-2-13 23:31 static/image/common/back.gif
你爸?你多大了?

15 岁

kangjinwen 发表于 2014-3-6 23:07:05

好吧,你们的技术贴..让我乱入一下.
看了一遍没看懂,
好奇的是什么时候会有新的,图文版的wiki词典呢..
现在还在用2012年iwiki的那个.
页: [1] 2
查看完整版本: 我的简单版维基解析引擎qlvwp。beta版