掌上百科 - PDAWIKI

 找回密码
 免费注册

QQ登录

只需一步,快速开始

查看: 3612|回复: 30

[工具] 我的简单版维基解析引擎qlvwp。beta版

[复制链接]

该用户从未签到

发表于 2013-12-30 01:32:28 | 显示全部楼层 |阅读模式
本帖最后由 惟吾无为 于 2014-1-4 15:25 编辑 5 Y) H; V: }- ?* B+ _+ Q7 ~

$ e& y" o- J6 v9 p, |% K3 |开源, GPLv2协议. 不会用git. 临时传到百度盘.
( _& L, o) T1 I9 `3 b$ a8 Z9 ~下载链接: http://pan.baidu.com/s/1nt7CIRR#dir/path=%2Fqlvwp%2Fqlvwp
9 E; d5 o! _% ]. w$ K重大更新, 2013年12月30日18:24之前下载的请重新下载. 现在windows上使用自带的lua可以直接打开2G大文件了.+ m2 M6 ?4 T# G$ p4 {9 ~5 x( _

+ t+ K' Q6 r  q/ {6 B; G本人于1月5日回家, 之后一个半月内没有网络, 期间回复将在元宵后统一处理. (如果过年走亲戚可能提前处理回复下)0 @2 H6 ~/ x5 Z! T

2 R, g$ N$ ]) i0 N% v6 }7 V-- zip包有份使用说明, 下面都是废话, 可以不看的 --1 r/ o: F' j7 q  Y! T
7 ~  X* l( }4 a& ^* H' `
在linux上使用wine运行mdxbuilder很慢。所以今后我很会少转mdx。但尽力提供数学公式的更新(过年后会尝试加入zhwiki图片更新), g2 ^0 q( K1 P4 A) q

  Y, [- y' ]2 d
灰色文字于2013年12月30日18:24失效

4 m4 \/ X# p9 ?& E
4 s. x8 }7 _: W& a: z7 Q9 ?现在发帖是写注意事项的,我怕明天忘了(话说我一直试图让解析器能直接在windows上运行,结果刚才才发现好几个lua解释器都只能处理2G内的文件。); E$ F0 _$ b0 k! c
0. 所有脚本都在linux下编写测试, 理论上windows能用, 但不做保证. 编辑脚本时请使用utf8编码, unix换行符.
$ a* [; H  _  ^- L1. 有能力的网友可自行编译支持大文件的lua解释器。否则参考第二条处理。5 X' q9 H$ ^' B3 ], [" j
2. lua解释器只能打开2G内的文件时,请先使用xml分割工具分割,然后拼接。(别用qlvwp自带的分割拼接脚本,依赖lua, 同样不起作用的)
& t2 Y1 d  B& I7 A

. p8 j6 k" T3 S7 j3 ]
; @0 s- d2 Y. @' g

, B! U# {* E' z, x8 v预期的解析器(lvwp)速度太慢,随着我对维基的了解越来越深,才终于发现这是个多么庞大的系统了,3年前的想法如今还是实现不了,所以出现了这个版本。
# @+ m$ T' M9 `) H, p, H1 u本版本不再试图实现维基的环境,而是保证速度,尽量针对性地人工实现一部分功能(到时模板就是直接运行对应函数,而非处理Template空间的对应页面了)。
: D' I& {) {' S# l+ nqlvwp包括解析器(quick_wiki_parser.lua)和数学公式转换器(convformula.lua)。并额外提供了wiki xml的分割工具和文本合并工具以及xml索引工具及单个词条提取工具。
" c- X1 Z$ C  ?' Y9 B. d4 h. ?3 ]
# g; o! @5 s4 c转换策略如下:
/ a8 f0 a3 F  s3 C5 K6 }' ~1. 先用数学公式转换器生成数学公式对照文件。(到时可使用我提供的对照文件可跳过此步. 记住附上对应的图片mdd)
( i/ x# l9 b3 }0 w8 k; [; a2. 用解析器处理维基标记文本。(读取数学公式对照文件来确定数学公式的图片名)
% y* P$ E  u7 [2 h*** 提示: 解析器限于lua, 只能使用单核, 如果你是多核电脑又很赶时间, 可先分割成多个小文件, 然后开多个进程来处理它们.
( r5 l8 S9 t3 v  q0 b  z! U* L* F0 Y( m* H6 P0 ~% A5 w8 p
功能对比.
图例:√实现 ×未实现  ○小部分实现 ◎大部分实现

$ K2 ]. K4 p9 \. B" O) u  ]
功能关键字qlvwpmediawiki0 v  d( s  B- Q# d
粗体/斜体'''/''+ K. n' C- {9 ^& D
链接[...]/[[...]]○1
. [0 N! t5 U8 e: W
表格{|...|}
6 E; ^  e$ ?+ `$ N4 v5 b' \
公式<math>5 J* B6 ~) ]5 f0 K
模板{{...}}×28 m. r$ Y6 G* m( p7 f
列表(空格)*#;:-
* P0 p+ b7 T+ j
标题=...=◎3
% {6 C8 }/ s5 N5 c
图片[[File:]]○4
; H; l, {  Z2 ?
nowiki<nowiki>/<pre>
$ i$ T8 C& U) d5 O  x- C
引用<ref>×# q8 [4 }3 V! S# U8 h! [
相册<gallary>×) M0 B2 W$ V. I# ~" ^" x* w/ o
字词转换-{...}-×5  Z+ @1 d' Z& s& ]1 Z9 y$ v" {
更多特性未支持...
2 B( k: o, ?" H* v6 z" b
注释:
$ g" u+ U' v5 `+ s. F1. 基础的web外接, 站内链接实现了. 图片链接直接返回原始文件名. 跨站链接未处理(转储文件从0.7版好像都没了), 姊妹项目未处理. 分类链接未处理. 就记得这些了...
1 y* ?/ P% {4 w* F+ p% t9 X2. 暂时显示出模板名和所有参数. 可用css屏蔽整个模板块, 或仅屏蔽参数块.
3 e/ k; m4 i" z5 e8 W3. 给标题们加id锚点了, 非url字符使用维基的.XX格式. 但没有生成索引. 需要的话我下次写.; m6 @5 ^9 y1 ]3 l( |  E. F. h, f
4. 图片链接只返回文件名, 其他的都丢弃了.6 _2 Q8 O  a0 T# }2 U9 U4 f1 T
5. 暂时没有字词转换. 今后可能实现, 可能不. 同胞們學習下正體中文唄.
/ \1 \2 e4 |  q9 V, K0 E
! i8 I$ z/ e+ G/ H* }% m0 z) a界面都是命令行。理论上cmd下亦可运行,未测试。
9 H+ K- z: `1 V+ y! [% C# o: S9 Z9 |使用说明见usage.txt

评分

1

查看全部评分

该用户从未签到

 楼主| 发表于 2013-12-30 01:33:23 | 显示全部楼层

buglist

本帖最后由 惟吾无为 于 2013-12-30 14:54 编辑 ; G) g* w8 e9 ^; o# `4 l

% G$ U9 e( b6 f, B, ~今日之前的log(2#): https://www.pdawiki.com/forum/thread-11549-1-2.html: a1 X9 T, d$ A3 V
------
, e( X/ B/ q% H" {8 v: X& Z20131230.
+ t! n6 f& s2 `. qbug1. 部分表格没有转换. (数学)
* `8 H6 v0 r% C* {8 y/ X
4 t. C2 I: r& Pbug2. 连续的标题(=)只转换了第一个? (化學元素)
4 O( u6 Q+ q$ c  w5 P! c" A
* j- Q7 V: B2 ^) P& A+ _  Ubug3. 有些公式没转换(数学, "-2, \frac{2}{3}, 1.21\,\!")

该用户从未签到

 楼主| 发表于 2013-12-30 01:34:14 | 显示全部楼层
本帖最后由 惟吾无为 于 2013-12-30 12:40 编辑
2 o* u) e4 _% o% f  J0 l) [& |/ P  j+ O
备用楼结束标记...
9 ]- G* Z. s, e/ f) Q------1 Y( u# b- h7 b$ T
速度不错.; k1 H# u4 i5 |: L
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& n/ _' E9 P/ h: }! U+ i4 I2 c5 W
loading formula hash ... 75886- F7 E/ t8 ]4 `# ~7 |  r% t
write file:        /mnt/data/wiki/zhwiki20131221.txt        % W  X- E* ^( s  P  D9 @3 _- T) R/ t
        setvbuf:        true
! N( m3 K* W/ ]. h1 ~now open dumps:9 P( J7 v- ]+ M" K1 x
4418894256      /mnt/files/downloads/zhwiki-20131221-pages-articles.xml; ?5 a  R& R) r* ?5 q
total filesize: 4418894256 (  4.1G)
5 ?! T7 B1 B+ X5 Z0 v: V2 s% ]# v 100.00% | time:  27m43s,      0s | page write:  1242092 drop:  1094643
  • TA的每日心情
    擦汗
    2023-9-2 09:16
  • 签到天数: 1103 天

    [LV.10]以坛为家III

    发表于 2013-12-30 07:46:01 | 显示全部楼层
    可不可留个选项,不转换数学公式,直接输出latex文字版。我觉得将公式留给renderer做更干净一些。

    该用户从未签到

     楼主| 发表于 2013-12-30 11:07:55 | 显示全部楼层
    本帖最后由 惟吾无为 于 2013-12-30 11:20 编辑 / O1 @" ]$ f4 ?& G' ]8 t5 T4 E
    spoony1971 发表于 2013-12-30 07:46 9 o  ?3 Q7 n  l0 y( M( N
    可不可留个选项,不转换数学公式,直接输出latex文字版。我觉得将公式留给renderer做更干净一些。
    1 R( U  X: k- k: P( r4 @) ]9 S( D

    # _4 }: c% w* @" A6 x( `转换工具调用texvc.
    0 l& |9 w9 }6 J; c1 e) p我这分两步的做法算是有个选项了. 可能需要改下加载对照文件的部分, 支持"deststr\tformula"的格式. 而非之前的"md5 formula"格式.5 a2 m6 b) d/ i6 l- T

    6 X+ j0 W# S: ^( @8 S( l. |您说的renderer是指谁?; D; c" q, \* V1 c# A1 u
    ----
    ) [; D  H$ J* s. q5 x6 k6 J2 w
    . E# v: Z1 {9 c5 ^; x7 G/ V对了, 没找到的公式都会显示原始代码.

    该用户从未签到

    发表于 2013-12-30 13:19:20 | 显示全部楼层
    本帖最后由 hyln9 于 2013-12-30 22:24 编辑 & c1 X- ?" d. M" U) V" i
    # J+ }( _/ U; Y  k
    前排贺电!非常感谢!
    " W/ @. Z. i9 _3 P! v# ]8 a" ^" X2 _7 w! i$ h7 o" J
    有好多话先留着,这里先补充一句,xml分割恰好可以用我破解的这个https://www.pdawiki.com/forum/thread-11459-1-1.html/ I1 s; ?1 ]1 [4 o
    支持几十个GB的xml分割,我已经测试过了。/ h: ?3 g4 u- J% h4 s; u
    而且功能比较强大2 L$ d" f/ y$ o; z1 W
    速度是非常快的,不需要预载入,直接开始分割,而且基本不占用硬盘,不影响干别的事。. t: E3 Q* [( l+ f

    : G5 _+ |& L, I不知引擎对于多语言支持的如何,比如enwiki?

    该用户从未签到

     楼主| 发表于 2013-12-30 13:30:53 | 显示全部楼层
    多转储文件就是为enwiki开发的.
    " F; g% y0 \" U. A* N: A2 [/ u# o; \可见2#的参考链接.
  • TA的每日心情
    擦汗
    2023-9-2 09:16
  • 签到天数: 1103 天

    [LV.10]以坛为家III

    发表于 2013-12-30 13:49:20 | 显示全部楼层
    惟吾无为 发表于 2013-12-30 11:07 7 x& A1 x0 x5 j" j1 _% o0 }
    转换工具调用texvc.
    7 I* n# x( |5 o0 j/ a) g我这分两步的做法算是有个选项了. 可能需要改下加载对照文件的部分, 支持"destst ...
    ) @; \0 J. Y2 S9 c
    我想用mathjax之类的引擎来处理公式。这样也可以让wiki小一点。

    该用户从未签到

     楼主| 发表于 2013-12-30 13:52:13 | 显示全部楼层
    spoony1971 发表于 2013-12-30 13:49 ( d7 b% a" H5 K4 q) U9 r* ]
    我想用mathjax之类的引擎来处理公式。这样也可以让wiki小一点。
    % x, v; A; F" ]1 j
    那就不指定hash. 然后修改mathjax. 解析class="error math"的span标签.0 z6 i& O, `; H; @
    或者你自己改脚本决定新的class名称.

    该用户从未签到

     楼主| 发表于 2013-12-30 18:33:46 | 显示全部楼层
    编译了下最新版的lua, 加入了大文件支持.& V& l0 b$ f; A2 b8 k
    已经加入了zip包.9 _7 o. W% U& H4 y( ?
  • TA的每日心情
    难过
    2018-3-28 11:32
  • 签到天数: 7 天

    [LV.3]偶尔看看II

    发表于 2013-12-30 19:34:36 | 显示全部楼层
    楼主辛苦了。
    1 e- }) m1 d& A6 \+ H4 j5 f" Z9 K! m% K8 X2 u
  • TA的每日心情
    郁闷
    2018-12-17 20:03
  • 签到天数: 2 天

    [LV.1]初来乍到

    发表于 2014-1-2 22:37:53 | 显示全部楼层
    貌似楼主可以看一下xowa项目,在sourceforge上。貌似不错,可惜不支持手机,也不能批量导出html。* `: h) x+ [+ M; c" Y2 m2 |7 _5 u
    汉化我都不知道怎么下手,代码超多。楼主可以参考一下它的标签处理和其他的项目处理。
  • TA的每日心情
    郁闷
    2018-12-17 20:03
  • 签到天数: 2 天

    [LV.1]初来乍到

    发表于 2014-1-2 22:43:53 | 显示全部楼层
    我在xowa提交过不少bug,顺便问一下这个程序怎么处理rss,媒体文件(pdf,ogg,mp3,等等),以及带颜色的数学公式,看看help:数学公式,用的标签有点问题,mathjax有一个不支持 。
  • TA的每日心情
    郁闷
    2018-12-17 20:03
  • 签到天数: 2 天

    [LV.1]初来乍到

    发表于 2014-1-2 22:47:17 | 显示全部楼层
    以后支持中文维基字典时注意一下,哪简直就是一个个坑呀,一堆引用站外数据,dump里压根没有。
  • TA的每日心情
    郁闷
    2018-12-17 20:03
  • 签到天数: 2 天

    [LV.1]初来乍到

    发表于 2014-1-2 22:50:44 | 显示全部楼层

    该用户从未签到

     楼主| 发表于 2014-1-2 23:55:45 | 显示全部楼层
    本帖最后由 惟吾无为 于 2014-1-3 00:01 编辑 : \7 a, G8 w" j* ?
    zjzengdongyang 发表于 2014-1-2 22:43 3 ^) J: S9 L, A
    我在xowa提交过不少bug,顺便问一下这个程序怎么处理rss,媒体文件(pdf,ogg,mp3,等等),以及带颜色的数学 ...

    ! \, j0 ~& e/ Z& A' K/ G% j( J4 _* l7 w" ]8 Y7 N- O9 w/ E1 X
    现在不会参考其他项目了(何况这个不能导出html). 我已经把维基的格式学的差不多了, 现在尽可能兼容维基并提高解析速度.
    , @& r% a3 G) {0 c3 j4 ]+ b6 I( d由于mdict不能处理多媒体,所以我只会转换图片. 发音不同于音乐, 所以任何音频也不会处理.
    7 W  l! O; j/ K. y8 i8 [, r数学公式调用texvc处理.6 L3 ]) E0 H4 Q+ j' t, ~* d2 S
    维基字典暂时不会考虑. 等我把维基百科做好了再说.' Z" b7 ~* k3 M, t4 C) t
    ----
    9 r3 u5 Z$ ?7 j0 W; f3 T( y4 f9 d& O9 g* R0 E6 T3 C1 a
    刚才看了下,基于java. 我不懂任何纯面向对象的编程语言.
  • TA的每日心情
    郁闷
    2018-12-17 20:03
  • 签到天数: 2 天

    [LV.1]初来乍到

    发表于 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标签,忘了7 I: F6 U9 A* e& l9 Z" V6 ]
    http://zh.wikipedia.org/wiki/Spe ... C%E4%BF%A1%E6%81%AF& p5 d/ R1 W4 A7 p, Q- Z9 A
    随便问一下,支持分类不?有没有可能从categorylinks.sql中提取?

    该用户从未签到

     楼主| 发表于 2014-1-30 16:16:45 来自手机 | 显示全部楼层
    zjzengdongyang 发表于 2014-1-29 14:26
    / r" ^  Y$ j7 H! H& y- x这些解析器扩展标签、、、、、、、、、、、、、、、、、和支持不?好像还有一些html5标签,忘了
    7 z7 A( p: T# N0 ^# X在http:// ...

    ( `3 y' t/ ^' P7 i  q$ l+ Xnowiki pre math已处理
    + N. ?7 b* t, `ref和gallery有计划。
    , w) p, V3 ^9 ~  t- f# S: d& l其他的等模板解析完成后酌情支持。
    6 I1 v+ c& H) f& Z$ O% H

    该用户从未签到

     楼主| 发表于 2014-1-30 16:21:11 来自手机 | 显示全部楼层
    分类现在还不知道怎么实现,可能需要数据库参与。目前走的纯Lua路线,调用数据库API就不是纯Lua了。
    , @  }* E, e+ A- u4 v! t我有时间再看那个SQL文件的格式,或许这是一个比较简单的实现办法。
  • TA的每日心情
    郁闷
    2018-12-17 20:03
  • 签到天数: 2 天

    [LV.1]初来乍到

    发表于 2014-2-11 16:17:30 | 显示全部楼层
    我曾经想通过导入数据库的方式还原官方的mediawiki,安装了我觉得有关内容的插件。) P1 b9 G9 u& \
    然后导入数据库,已经导入了十几个小时,结果我复制文件时按了Ctrl+c,但是在终端里按的。.........结果中断,我欲哭无泪啊。  S5 f: Z4 [* D0 M  u4 l1 s2 \
    看了看时间,心疼了一下电费,果断放弃。
  • TA的每日心情
    郁闷
    2018-12-17 20:03
  • 签到天数: 2 天

    [LV.1]初来乍到

    发表于 2014-2-11 16:22:14 | 显示全部楼层
    hyln9 发表于 2013-12-30 13:19
    " D/ D. F* h# i8 @+ }% r前排贺电!非常感谢!
    ! u- z4 ?  _% Q3 t: Y; m; ^0 o; _  q' A6 g& R2 X
    有好多话先留着,这里先补充一句,xml分割恰好可以用我破解的这个http://www.pdaw ...
    ; Z0 ~; `5 w7 a0 q' f  m

    % _' J, X( a- }8 a% t* j- F+ N他的这玩意,我根本用不了。本人在xp里琢磨了半个多小时。最后受不了,打开OllyDbg,自己动手,结果我爸回来了,果断关机。
    * q3 C. F5 z1 R# ^

    该用户从未签到

     楼主| 发表于 2014-2-13 16:12:19 | 显示全部楼层
    zjzengdongyang 发表于 2014-2-11 16:17
      L5 J" b, ^- W我曾经想通过导入数据库的方式还原官方的mediawiki,安装了我觉得有关内容的插件。, y, u" Q+ X9 v6 ]) h/ s
    然后导入数据库,已经导 ...
    $ N  l# `7 G! P6 d
    哈哈, 我也导过, 也欲哭无泪过, 已然绝望, 所以整这...

    该用户从未签到

    发表于 2014-2-13 23:31:29 | 显示全部楼层
    zjzengdongyang 发表于 2014-2-11 16:22 , q) L1 Z0 N) y" {* Q
    他的这玩意,我根本用不了。本人在xp里琢磨了半个多小时。最后受不了,打开OllyDbg,自己动手,结果我爸 ...

    7 |0 [6 e, g+ l* j+ j# v4 q7 g你爸?你多大了?
  • TA的每日心情
    郁闷
    2018-12-17 20:03
  • 签到天数: 2 天

    [LV.1]初来乍到

    发表于 2014-2-23 14:07:31 | 显示全部楼层
    hyln9 发表于 2014-2-13 23:31 ! l+ w0 ]* ]* B6 K6 i& X
    你爸?你多大了?
      o, ^5 O5 E3 P# S8 N
    15 岁

    点评

    15岁就已经数据库、OllyDbg、汇编语言、HTML语言、XML、都精通了?天才!我15岁的时候连电脑都没有  发表于 2014-10-13 10:41

    该用户从未签到

    发表于 2014-3-6 23:07:05 | 显示全部楼层
    好吧,你们的技术贴..让我乱入一下.
    * l; Y. q9 z: J2 p看了一遍没看懂,! q7 x- n9 S0 D. ^7 ]% n
    好奇的是什么时候会有新的,图文版的wiki词典呢..
    4 m8 U& Q+ e% w现在还在用2012年iwiki的那个.9 _8 Z5 ]8 C$ X/ G! [
    您需要登录后才可以回帖 登录 | 免费注册

    本版积分规则

    小黑屋|手机版|Archiver|PDAWIKI |网站地图

    GMT+8, 2025-4-27 07:53 , Processed in 0.025126 second(s), 23 queries .

    Powered by Discuz! X3.4

    © 2001-2023 Discuz! Team.

    快速回复 返回顶部 返回列表