掌上百科 - PDAWIKI

 找回密码
 免费注册

QQ登录

只需一步,快速开始

查看: 3682|回复: 30

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

[复制链接]

该用户从未签到

发表于 2013-12-30 01:32:28 | 显示全部楼层 |阅读模式
本帖最后由 惟吾无为 于 2014-1-4 15:25 编辑
: Q! z& {' ]7 U( a5 O# [) n* J0 S; d' e; `
开源, GPLv2协议. 不会用git. 临时传到百度盘.
9 S: _: U. J- Q下载链接: http://pan.baidu.com/s/1nt7CIRR#dir/path=%2Fqlvwp%2Fqlvwp
& s$ S; R, u  a& F/ r% B% G! J- N重大更新, 2013年12月30日18:24之前下载的请重新下载. 现在windows上使用自带的lua可以直接打开2G大文件了.3 x# N, Y! |* y/ B3 o: Q; _# B
% ?8 R3 n" U% j1 _1 d, d, L$ R
本人于1月5日回家, 之后一个半月内没有网络, 期间回复将在元宵后统一处理. (如果过年走亲戚可能提前处理回复下)
: t' e4 f9 i! L% R
1 p" Y4 l7 u; j* ?# w9 @2 }$ w-- zip包有份使用说明, 下面都是废话, 可以不看的 --: Z$ r5 @1 C; k* l  \1 p4 ]& W

3 |( M& {; T3 u; v8 {4 e/ R在linux上使用wine运行mdxbuilder很慢。所以今后我很会少转mdx。但尽力提供数学公式的更新(过年后会尝试加入zhwiki图片更新)
7 X: _4 K, V; b& N  q
' w8 z  e6 R- E) X
灰色文字于2013年12月30日18:24失效
4 Q( M3 V! C/ r+ I8 P! m) S; {+ a6 O
" V" R& K" ^8 P, y0 Z3 l) M
现在发帖是写注意事项的,我怕明天忘了(话说我一直试图让解析器能直接在windows上运行,结果刚才才发现好几个lua解释器都只能处理2G内的文件。)
9 }7 s7 K" A( z8 \0. 所有脚本都在linux下编写测试, 理论上windows能用, 但不做保证. 编辑脚本时请使用utf8编码, unix换行符.
" K- \5 `% J* D4 d$ J* _1. 有能力的网友可自行编译支持大文件的lua解释器。否则参考第二条处理。
" G( E$ |+ Z! `) B  l3 O: u2. lua解释器只能打开2G内的文件时,请先使用xml分割工具分割,然后拼接。(别用qlvwp自带的分割拼接脚本,依赖lua, 同样不起作用的)' y/ O! n  y: ^3 Z6 r- K  r
$ t8 W. ]* O% @4 R1 ^9 v: p* _
, z) G) X# F, s! I1 B: R
  m$ Z) F* X' M8 X! t9 |" `, |
预期的解析器(lvwp)速度太慢,随着我对维基的了解越来越深,才终于发现这是个多么庞大的系统了,3年前的想法如今还是实现不了,所以出现了这个版本。
$ f' |2 T+ n2 h2 U/ w& u本版本不再试图实现维基的环境,而是保证速度,尽量针对性地人工实现一部分功能(到时模板就是直接运行对应函数,而非处理Template空间的对应页面了)。
6 v/ _7 c% n5 hqlvwp包括解析器(quick_wiki_parser.lua)和数学公式转换器(convformula.lua)。并额外提供了wiki xml的分割工具和文本合并工具以及xml索引工具及单个词条提取工具。! ~; t" {3 ~- ?3 M9 q
) ~$ z  S6 ]7 d3 X9 j
转换策略如下:
1 ]1 j* h0 H5 d3 L8 p* a7 ~1. 先用数学公式转换器生成数学公式对照文件。(到时可使用我提供的对照文件可跳过此步. 记住附上对应的图片mdd)
- t3 x. l6 P. R2. 用解析器处理维基标记文本。(读取数学公式对照文件来确定数学公式的图片名)" n& m, v( K) {1 O& c1 ]7 t- t
*** 提示: 解析器限于lua, 只能使用单核, 如果你是多核电脑又很赶时间, 可先分割成多个小文件, 然后开多个进程来处理它们." Q, }& r' W+ |8 m  A6 z
- G2 A% F/ o0 A( o
功能对比.
图例:√实现 ×未实现  ○小部分实现 ◎大部分实现
5 }# m" m" o8 F3 o0 q
功能关键字qlvwpmediawiki. V5 n; B, u5 h5 d  Q$ @( W' \6 B
粗体/斜体'''/''
& h7 e7 h4 I( r& _
链接[...]/[[...]]○1
7 p& U! Y# w) q" h% n% i8 Y: k
表格{|...|}: G/ u4 \# p" O: k! _+ M) F9 Q
公式<math>
; I* G8 C) N6 P" }) q; j$ m& \1 p
模板{{...}}×2, J9 ?8 Q: P5 i+ q& |$ ^8 P- f
列表(空格)*#;:-5 ]4 M3 H6 ~. j# n
标题=...=◎30 h* V* }9 ]% b1 H) r5 L
图片[[File:]]○4
' q0 f$ v8 z( _" E0 I
nowiki<nowiki>/<pre>2 E2 n' M$ [( Q. c
引用<ref>×. a  l1 J0 Z. J0 t( X
相册<gallary>×: a6 w4 b4 T" f' ?* }0 i
字词转换-{...}-×5% t( P2 |! A  @7 T
更多特性未支持...

* I/ }! q: j8 ]" p7 l1 s- u注释:6 y* {& s1 U; g# I, h( S% v, J" z, |3 x
1. 基础的web外接, 站内链接实现了. 图片链接直接返回原始文件名. 跨站链接未处理(转储文件从0.7版好像都没了), 姊妹项目未处理. 分类链接未处理. 就记得这些了...6 ~% i* C4 k4 c; D* q5 }2 C
2. 暂时显示出模板名和所有参数. 可用css屏蔽整个模板块, 或仅屏蔽参数块.. m3 @/ p. b0 i0 @- F& N
3. 给标题们加id锚点了, 非url字符使用维基的.XX格式. 但没有生成索引. 需要的话我下次写.: j8 m8 v4 ]5 q. F2 t
4. 图片链接只返回文件名, 其他的都丢弃了.
' W0 z) @  l7 ^5 _$ `# b) b% M  ~5. 暂时没有字词转换. 今后可能实现, 可能不. 同胞們學習下正體中文唄.
# f$ b) R' ?- R4 C; Q" U2 [' V" f/ _3 I/ F/ ?
界面都是命令行。理论上cmd下亦可运行,未测试。8 k% R9 P* c. k2 Z* E4 {% w
使用说明见usage.txt

评分

1

查看全部评分

该用户从未签到

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

buglist

本帖最后由 惟吾无为 于 2013-12-30 14:54 编辑 1 X3 t& Q2 t% ?- `5 V
# K1 [  t( i0 x8 m9 i# x/ c
今日之前的log(2#): https://www.pdawiki.com/forum/thread-11549-1-2.html
4 J, r8 x4 C- p; t& X------5 I( y% V0 S( ^: V, r
20131230.2 a+ ]1 w- H, S$ P
bug1. 部分表格没有转换. (数学)
% J: o: D; ]3 t0 K' x' z4 e9 k' H8 t; K  ?! Z& N) w6 p
bug2. 连续的标题(=)只转换了第一个? (化學元素)! C( `& l2 f. @

. x) T: P, Z; o7 r& ?bug3. 有些公式没转换(数学, "-2, \frac{2}{3}, 1.21\,\!")

该用户从未签到

 楼主| 发表于 2013-12-30 01:34:14 | 显示全部楼层
本帖最后由 惟吾无为 于 2013-12-30 12:40 编辑
2 q7 w& G! E8 ?2 C7 P0 _% X* H9 {7 z: I' }1 t
备用楼结束标记...
( o& O! U" q4 [, _) L$ `9 V------
7 E. a7 Y2 |& U3 S4 R$ v速度不错.: y4 W$ n; v0 a" _/ 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
$ q  K/ H+ b* Y- rloading formula hash ... 758862 v  D/ n- A' b; L" N+ }" G
write file:        /mnt/data/wiki/zhwiki20131221.txt        ) _8 [% l" k5 K
        setvbuf:        true
$ m/ F/ n/ e3 v, ^now open dumps:6 _' J# }8 f# l( W
4418894256      /mnt/files/downloads/zhwiki-20131221-pages-articles.xml
. B( Q- B/ u+ a6 ytotal filesize: 4418894256 (  4.1G)
, s5 I3 ^, g: X8 q9 g 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 编辑 $ W) C6 O4 Z# H9 [& ?! @* U, u2 o, h
    spoony1971 发表于 2013-12-30 07:46
    9 m" G' ?9 \5 F, w. b* L4 M! F. O可不可留个选项,不转换数学公式,直接输出latex文字版。我觉得将公式留给renderer做更干净一些。

    9 c6 N2 f) t# e& x( P# ]
    7 e2 h+ L1 Q5 H7 |转换工具调用texvc.
    7 A5 A) c/ e$ S我这分两步的做法算是有个选项了. 可能需要改下加载对照文件的部分, 支持"deststr\tformula"的格式. 而非之前的"md5 formula"格式.: ]9 x8 O) ]; m! I5 [* E3 K

    # a+ t0 |, K0 G; M/ z; e您说的renderer是指谁?
    : u& |6 J  q, e$ o6 v----% n" B- f3 P+ B& R8 u' ?
    # W# ]( D0 r' o, T! W
    对了, 没找到的公式都会显示原始代码.

    该用户从未签到

    发表于 2013-12-30 13:19:20 | 显示全部楼层
    本帖最后由 hyln9 于 2013-12-30 22:24 编辑
    7 |0 j, m6 k* S% I+ s" q  ]
    2 X* N9 X, R$ P' A* }+ ?前排贺电!非常感谢!
    4 R: ^% d% t- ]! c3 r+ k* C, [9 U
    有好多话先留着,这里先补充一句,xml分割恰好可以用我破解的这个https://www.pdawiki.com/forum/thread-11459-1-1.html, _, u1 N: F/ o
    支持几十个GB的xml分割,我已经测试过了。
    9 }3 a3 [; d: j3 f. ]6 f而且功能比较强大
    9 V" V! {$ d6 y% [1 j速度是非常快的,不需要预载入,直接开始分割,而且基本不占用硬盘,不影响干别的事。
    ; n1 ^( G% c& e. R/ G& J; H0 o7 `; e+ M1 l1 Y: y
    不知引擎对于多语言支持的如何,比如enwiki?

    该用户从未签到

     楼主| 发表于 2013-12-30 13:30:53 | 显示全部楼层
    多转储文件就是为enwiki开发的./ G8 }1 j+ V5 K) Q1 w
    可见2#的参考链接.
  • TA的每日心情
    擦汗
    2023-9-2 09:16
  • 签到天数: 1103 天

    [LV.10]以坛为家III

    发表于 2013-12-30 13:49:20 | 显示全部楼层
    惟吾无为 发表于 2013-12-30 11:07 3 Q& W8 H" j3 \4 T. S, ^
    转换工具调用texvc. - Z3 F' n% S9 v
    我这分两步的做法算是有个选项了. 可能需要改下加载对照文件的部分, 支持"destst ...
    1 i5 h$ j4 b! i7 n9 y
    我想用mathjax之类的引擎来处理公式。这样也可以让wiki小一点。

    该用户从未签到

     楼主| 发表于 2013-12-30 13:52:13 | 显示全部楼层
    spoony1971 发表于 2013-12-30 13:49
    # O2 t9 I% E2 }8 {3 s, `7 g6 w  N% S我想用mathjax之类的引擎来处理公式。这样也可以让wiki小一点。
    % L6 b6 t9 M! }
    那就不指定hash. 然后修改mathjax. 解析class="error math"的span标签.* X$ ^) X* ~6 U1 l" O' `
    或者你自己改脚本决定新的class名称.

    该用户从未签到

     楼主| 发表于 2013-12-30 18:33:46 | 显示全部楼层
    编译了下最新版的lua, 加入了大文件支持.
    2 ~* o" P* U1 _已经加入了zip包., j, E+ e& P* ~1 f3 U5 s
  • TA的每日心情
    难过
    2018-3-28 11:32
  • 签到天数: 7 天

    [LV.3]偶尔看看II

    发表于 2013-12-30 19:34:36 | 显示全部楼层
    楼主辛苦了。
    3 g6 H0 h5 e4 N2 _  E& f8 E6 s% f# W- Y2 H/ F
  • TA的每日心情
    郁闷
    2018-12-17 20:03
  • 签到天数: 2 天

    [LV.1]初来乍到

    发表于 2014-1-2 22:37:53 | 显示全部楼层
    貌似楼主可以看一下xowa项目,在sourceforge上。貌似不错,可惜不支持手机,也不能批量导出html。
    " ^) ]6 D. Q! B/ ]( ]: v0 x+ Y$ [汉化我都不知道怎么下手,代码超多。楼主可以参考一下它的标签处理和其他的项目处理。
  • 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 | 显示全部楼层
    看看https://www.pdawiki.com/forum/fo ... 6orderby%3Ddateline+ j9 c  y" h' N9 r6 p4 q" D
    7楼

    该用户从未签到

     楼主| 发表于 2014-1-2 23:55:45 | 显示全部楼层
    本帖最后由 惟吾无为 于 2014-1-3 00:01 编辑
      g1 ^" n8 }8 I) A
    zjzengdongyang 发表于 2014-1-2 22:43 8 l7 c5 Z& h' Y, ?0 s/ k; T' F
    我在xowa提交过不少bug,顺便问一下这个程序怎么处理rss,媒体文件(pdf,ogg,mp3,等等),以及带颜色的数学 ...

    0 q. \! i# ]; w3 p. u8 X3 X9 X- l! F; f0 |+ Q5 w1 G) c, b5 D/ F6 w
    现在不会参考其他项目了(何况这个不能导出html). 我已经把维基的格式学的差不多了, 现在尽可能兼容维基并提高解析速度.8 o7 K% Z% e, Y/ Q: l
    由于mdict不能处理多媒体,所以我只会转换图片. 发音不同于音乐, 所以任何音频也不会处理.
    7 ^" Y: ?6 M  o3 j: e& W  l数学公式调用texvc处理.8 ]) k# J+ v' ^$ n$ w! j
    维基字典暂时不会考虑. 等我把维基百科做好了再说.. N  e1 f# W: {, t6 e/ U
    ----
    ) w! Y, T( v+ s- u5 @1 B0 L9 j$ F$ b# j" i
    刚才看了下,基于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标签,忘了8 f; r/ r$ @0 O0 h
    http://zh.wikipedia.org/wiki/Spe ... C%E4%BF%A1%E6%81%AF
    8 z/ v8 S, D4 W" @0 ]0 M/ x( L随便问一下,支持分类不?有没有可能从categorylinks.sql中提取?

    该用户从未签到

     楼主| 发表于 2014-1-30 16:16:45 来自手机 | 显示全部楼层
    zjzengdongyang 发表于 2014-1-29 14:260 d. ~$ h- l# f: N
    这些解析器扩展标签、、、、、、、、、、、、、、、、、和支持不?好像还有一些html5标签,忘了
    4 O% p; C! r; Q  |/ r2 V在http:// ...

    + m. f2 u* Y4 V& g6 o+ @nowiki pre math已处理/ T3 E$ l7 J9 h+ D
    ref和gallery有计划。+ V, ~& D# b, a6 S
    其他的等模板解析完成后酌情支持。6 X6 |7 |" d' B) A4 Q

    该用户从未签到

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

    [LV.1]初来乍到

    发表于 2014-2-11 16:17:30 | 显示全部楼层
    我曾经想通过导入数据库的方式还原官方的mediawiki,安装了我觉得有关内容的插件。; z9 P+ b/ Y* j) |& C7 w
    然后导入数据库,已经导入了十几个小时,结果我复制文件时按了Ctrl+c,但是在终端里按的。.........结果中断,我欲哭无泪啊。
    $ q& }$ |& S2 b8 b# y$ f看了看时间,心疼了一下电费,果断放弃。
  • TA的每日心情
    郁闷
    2018-12-17 20:03
  • 签到天数: 2 天

    [LV.1]初来乍到

    发表于 2014-2-11 16:22:14 | 显示全部楼层
    hyln9 发表于 2013-12-30 13:19 , G. k" U; F6 m6 ?- X8 ?
    前排贺电!非常感谢!
    2 K6 `8 k$ l8 X7 I5 z) g) P# _3 H+ Q$ v# w; R1 B7 R
    有好多话先留着,这里先补充一句,xml分割恰好可以用我破解的这个http://www.pdaw ...

    & W; a' I; U* R! G1 {7 |/ L+ q  e8 F& C
    他的这玩意,我根本用不了。本人在xp里琢磨了半个多小时。最后受不了,打开OllyDbg,自己动手,结果我爸回来了,果断关机。% `4 @4 K3 {/ b1 {" {# y  L

    该用户从未签到

     楼主| 发表于 2014-2-13 16:12:19 | 显示全部楼层
    zjzengdongyang 发表于 2014-2-11 16:17 9 p$ `, U& n2 J) q0 Y: Y
    我曾经想通过导入数据库的方式还原官方的mediawiki,安装了我觉得有关内容的插件。
    : p1 q5 n8 [! K3 z: Z  i然后导入数据库,已经导 ...

    + {7 Y) {3 V) s( m4 \哈哈, 我也导过, 也欲哭无泪过, 已然绝望, 所以整这...

    该用户从未签到

    发表于 2014-2-13 23:31:29 | 显示全部楼层
    zjzengdongyang 发表于 2014-2-11 16:22
    - D3 A  I7 k1 ?2 H! r他的这玩意,我根本用不了。本人在xp里琢磨了半个多小时。最后受不了,打开OllyDbg,自己动手,结果我爸 ...

    , n* w, Y9 J7 J你爸?你多大了?
  • TA的每日心情
    郁闷
    2018-12-17 20:03
  • 签到天数: 2 天

    [LV.1]初来乍到

    发表于 2014-2-23 14:07:31 | 显示全部楼层
    hyln9 发表于 2014-2-13 23:31 * T! k0 c1 J% V7 u! w5 H
    你爸?你多大了?
    / G& T, M+ ^& V1 v! c! m2 G
    15 岁

    点评

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

    该用户从未签到

    发表于 2014-3-6 23:07:05 | 显示全部楼层
    好吧,你们的技术贴..让我乱入一下.6 J) S9 ]) \, X. u7 R4 n
    看了一遍没看懂,
    - o2 f) f9 ?$ @好奇的是什么时候会有新的,图文版的wiki词典呢..0 J& y4 L( P3 A# H' h# V
    现在还在用2012年iwiki的那个.
      |/ z4 P4 ^: p8 X: B: d
    您需要登录后才可以回帖 登录 | 免费注册

    本版积分规则

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

    GMT+8, 2025-5-8 20:05 , Processed in 0.024962 second(s), 23 queries .

    Powered by Discuz! X3.4

    © 2001-2023 Discuz! Team.

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