掌上百科 - PDAWIKI

 找回密码
 免费注册

QQ登录

只需一步,快速开始

查看: 2937|回复: 30

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

[复制链接]

该用户从未签到

发表于 2013-12-30 01:32:28 | 显示全部楼层 |阅读模式
本帖最后由 惟吾无为 于 2014-1-4 15:25 编辑
4 |/ Z/ x( J2 X+ k
0 M$ D- g9 a& e9 L5 H) Z9 [1 d开源, GPLv2协议. 不会用git. 临时传到百度盘.
( p- N2 l  X* w& R1 W, K& t下载链接: http://pan.baidu.com/s/1nt7CIRR#dir/path=%2Fqlvwp%2Fqlvwp6 c! s4 X" _- Y. W
重大更新, 2013年12月30日18:24之前下载的请重新下载. 现在windows上使用自带的lua可以直接打开2G大文件了.# i: s+ q) \- {. g5 J

) d& O( {1 ^6 ^% M本人于1月5日回家, 之后一个半月内没有网络, 期间回复将在元宵后统一处理. (如果过年走亲戚可能提前处理回复下)
8 k6 T6 i% G' F' [1 w# F
. A) f& ]3 f6 {5 Z& o-- zip包有份使用说明, 下面都是废话, 可以不看的 --
! D+ V! N6 G0 G( R8 S. E! ^% u, c% B4 u' h' J; J" ~
在linux上使用wine运行mdxbuilder很慢。所以今后我很会少转mdx。但尽力提供数学公式的更新(过年后会尝试加入zhwiki图片更新); j- q3 k( U; G) e0 a1 Z
/ G  C" ~7 R: P% ~5 M7 L- v
灰色文字于2013年12月30日18:24失效
# y3 i2 S9 c3 p

+ {, R+ s) \" K" N  H现在发帖是写注意事项的,我怕明天忘了(话说我一直试图让解析器能直接在windows上运行,结果刚才才发现好几个lua解释器都只能处理2G内的文件。)/ y* |( W2 U3 _' t) h8 o  k! g) `
0. 所有脚本都在linux下编写测试, 理论上windows能用, 但不做保证. 编辑脚本时请使用utf8编码, unix换行符.
9 E- C& s2 Y4 {. q2 e1. 有能力的网友可自行编译支持大文件的lua解释器。否则参考第二条处理。
) Y- m, |; d3 h& J8 E2. lua解释器只能打开2G内的文件时,请先使用xml分割工具分割,然后拼接。(别用qlvwp自带的分割拼接脚本,依赖lua, 同样不起作用的)
, t1 O  R# c- B( ]# q0 _

6 z3 P6 K! O9 t; {$ O# q

0 f# H: D1 V4 L
- j- }6 K, _9 V) d2 m" u预期的解析器(lvwp)速度太慢,随着我对维基的了解越来越深,才终于发现这是个多么庞大的系统了,3年前的想法如今还是实现不了,所以出现了这个版本。
( Y, ~& y" \% ]; H4 b  x本版本不再试图实现维基的环境,而是保证速度,尽量针对性地人工实现一部分功能(到时模板就是直接运行对应函数,而非处理Template空间的对应页面了)。
( s8 [' {/ g. d1 \2 _' `& q/ t& }qlvwp包括解析器(quick_wiki_parser.lua)和数学公式转换器(convformula.lua)。并额外提供了wiki xml的分割工具和文本合并工具以及xml索引工具及单个词条提取工具。
: e2 b$ ?* S# I- ]3 b2 L  ]8 v  O! s2 e' g
转换策略如下:
8 v! G) S& W$ R. @1. 先用数学公式转换器生成数学公式对照文件。(到时可使用我提供的对照文件可跳过此步. 记住附上对应的图片mdd)
% I" L( v: E1 a) ^- p; r+ C2. 用解析器处理维基标记文本。(读取数学公式对照文件来确定数学公式的图片名)
7 q3 `  b. q/ _2 m$ `" Z: _*** 提示: 解析器限于lua, 只能使用单核, 如果你是多核电脑又很赶时间, 可先分割成多个小文件, 然后开多个进程来处理它们.
/ K) z0 {5 I: P  V+ V- h
- J& B# ?5 C$ |# V2 g
功能对比.
图例:√实现 ×未实现  ○小部分实现 ◎大部分实现
& v8 r: s0 [6 R3 R2 l
功能关键字qlvwpmediawiki
$ R& f0 B3 x+ @8 T
粗体/斜体'''/''
6 D" E6 z" U! S) b
链接[...]/[[...]]○1
) A" P1 E5 M- _
表格{|...|}" S9 o. c4 N' S
公式<math>
, K& F9 i# v' c, U; H' m
模板{{...}}×27 V$ I! f% ]  h9 a, G5 u& J" o
列表(空格)*#;:-
' g% E/ X$ U  S8 u
标题=...=◎31 z* H/ c, x$ q' W2 W
图片[[File:]]○4
+ [+ }- X+ ^! }9 J6 ]5 p/ }9 l
nowiki<nowiki>/<pre>
- E" y. p( _2 e* t& B9 a6 ~
引用<ref>×' T/ i  E, W0 q* V5 L0 O; Z
相册<gallary>×
: ~" u: D1 ?4 l1 r. Y, s, _
字词转换-{...}-×5/ n! z+ H& f% `; u6 l/ J$ Z
更多特性未支持...

: [; P8 l: s- P. |注释:4 o% ?3 I8 E3 t5 y. m
1. 基础的web外接, 站内链接实现了. 图片链接直接返回原始文件名. 跨站链接未处理(转储文件从0.7版好像都没了), 姊妹项目未处理. 分类链接未处理. 就记得这些了...
/ t* y1 V% [5 H8 \  S2. 暂时显示出模板名和所有参数. 可用css屏蔽整个模板块, 或仅屏蔽参数块.; A7 b% z0 u9 Y' l4 \
3. 给标题们加id锚点了, 非url字符使用维基的.XX格式. 但没有生成索引. 需要的话我下次写.# i0 k, l( w8 \1 v1 S: G
4. 图片链接只返回文件名, 其他的都丢弃了.
! n: e9 P8 D1 m" D1 ^5. 暂时没有字词转换. 今后可能实现, 可能不. 同胞們學習下正體中文唄.
( y* Z* z, r1 F" n! e$ ~
3 {0 i0 u, o& s; b界面都是命令行。理论上cmd下亦可运行,未测试。5 H) R3 P: x7 [4 X! _; W
使用说明见usage.txt

评分

1

查看全部评分

该用户从未签到

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

buglist

本帖最后由 惟吾无为 于 2013-12-30 14:54 编辑 ; j5 b0 K! o$ g, N
* e9 l8 ]% _# y. ?( _0 a3 v" H
今日之前的log(2#): https://www.pdawiki.com/forum/thread-11549-1-2.html
( t% Y" z4 C# t------
& M% _' y( ?" J& F7 l# A3 |20131230.& q% ]0 c9 O( I0 w# j+ Y) z
bug1. 部分表格没有转换. (数学)$ V3 t6 v: @; w2 b
; V& j; z6 U* e4 L
bug2. 连续的标题(=)只转换了第一个? (化學元素)
: m" H  F' }2 y# h  j) Y/ V
5 h3 C5 K) ^7 q$ [, I4 L, Pbug3. 有些公式没转换(数学, "-2, \frac{2}{3}, 1.21\,\!")

该用户从未签到

 楼主| 发表于 2013-12-30 01:34:14 | 显示全部楼层
本帖最后由 惟吾无为 于 2013-12-30 12:40 编辑
$ o1 K; E) Z( q  I# E; p+ Y4 w  W& ^0 S9 @
备用楼结束标记...$ k1 n# t: U) |
------' n0 F/ ^6 F0 T# H  y; J
速度不错.* N% Z4 W+ Y+ I+ b; W; E
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.xml9 z9 u- h3 B% E$ S2 G) a
loading formula hash ... 75886& V) r+ \  g2 h5 R: }( J
write file:        /mnt/data/wiki/zhwiki20131221.txt        0 f. Y" k' G: o" ?3 t3 ~7 r  N
        setvbuf:        true/ S% F' @  S( k- M9 i9 M1 h
now open dumps:+ I( Y  A, L1 R! ?
4418894256      /mnt/files/downloads/zhwiki-20131221-pages-articles.xml
9 |5 I9 o8 x7 F. a; n- {* ctotal filesize: 4418894256 (  4.1G)
  n) K* i) ], a2 a( @ 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 编辑 - ^& d* Y0 B$ _" K  t. S
    spoony1971 发表于 2013-12-30 07:46 & J$ j! E- a+ k# p  f2 }  C
    可不可留个选项,不转换数学公式,直接输出latex文字版。我觉得将公式留给renderer做更干净一些。

    $ P1 }( N- n( a) F/ z# H3 T3 ?+ Q8 q  n# ]6 V  v! [
    转换工具调用texvc.
    # p. l- M$ d9 }3 H9 o! g6 H我这分两步的做法算是有个选项了. 可能需要改下加载对照文件的部分, 支持"deststr\tformula"的格式. 而非之前的"md5 formula"格式.
    / @5 ^. r8 f$ K5 Z  A( A& k/ N  H/ N9 b  v1 ^
    您说的renderer是指谁?
    * l( W  L3 J3 \* ^4 T----# d0 N* j/ g# G. ]' w: o

    5 o! G' D  g1 P; {1 B对了, 没找到的公式都会显示原始代码.

    该用户从未签到

    发表于 2013-12-30 13:19:20 | 显示全部楼层
    本帖最后由 hyln9 于 2013-12-30 22:24 编辑 / c; n4 k5 x0 P% Y

    0 e0 j, G- ]0 M前排贺电!非常感谢!3 L( g; k5 K- [& h5 i9 r" c+ z8 i( b

    3 `& d" r6 _- H' W有好多话先留着,这里先补充一句,xml分割恰好可以用我破解的这个https://www.pdawiki.com/forum/thread-11459-1-1.html
    + |; t5 f+ j/ o* I+ ], Q7 {2 Q支持几十个GB的xml分割,我已经测试过了。
    % L/ V+ `+ k/ N# l  b而且功能比较强大: I8 v8 _  B! u8 r
    速度是非常快的,不需要预载入,直接开始分割,而且基本不占用硬盘,不影响干别的事。
    / P/ A( m  x6 {& A4 x+ d
    ; Q9 N+ n* ^5 l! D3 w% W2 B) T不知引擎对于多语言支持的如何,比如enwiki?

    该用户从未签到

     楼主| 发表于 2013-12-30 13:30:53 | 显示全部楼层
    多转储文件就是为enwiki开发的.
    , ^% I+ ?* G. _( D可见2#的参考链接.
  • TA的每日心情
    擦汗
    2023-9-2 09:16
  • 签到天数: 1103 天

    [LV.10]以坛为家III

    发表于 2013-12-30 13:49:20 | 显示全部楼层
    惟吾无为 发表于 2013-12-30 11:07   C; ]' n/ u# s& @
    转换工具调用texvc.
    ; G- {' t( }, _$ z. E我这分两步的做法算是有个选项了. 可能需要改下加载对照文件的部分, 支持"destst ...
    ) J) |/ C- s8 _, q0 i& P
    我想用mathjax之类的引擎来处理公式。这样也可以让wiki小一点。

    该用户从未签到

     楼主| 发表于 2013-12-30 13:52:13 | 显示全部楼层
    spoony1971 发表于 2013-12-30 13:49
    / m" ]' ^+ G0 t: M我想用mathjax之类的引擎来处理公式。这样也可以让wiki小一点。
    1 _+ ~$ N( `5 p  Z; X
    那就不指定hash. 然后修改mathjax. 解析class="error math"的span标签.
    . x% h6 n$ k0 V% E1 ?# d或者你自己改脚本决定新的class名称.

    该用户从未签到

     楼主| 发表于 2013-12-30 18:33:46 | 显示全部楼层
    编译了下最新版的lua, 加入了大文件支持.
    1 E: L6 q: g/ u& g3 y已经加入了zip包.( ?4 b" Q; I& S' `" }0 y  H( \
  • TA的每日心情
    难过
    2018-3-28 11:32
  • 签到天数: 7 天

    [LV.3]偶尔看看II

    发表于 2013-12-30 19:34:36 | 显示全部楼层
    楼主辛苦了。
    ) y& n. F; E1 M; F- F5 Z- a# {) ^
    ) h2 Q* N* e7 X/ F
  • TA的每日心情
    郁闷
    2018-12-17 20:03
  • 签到天数: 2 天

    [LV.1]初来乍到

    发表于 2014-1-2 22:37:53 | 显示全部楼层
    貌似楼主可以看一下xowa项目,在sourceforge上。貌似不错,可惜不支持手机,也不能批量导出html。
    & i5 b* D  _; K- A' z0 k汉化我都不知道怎么下手,代码超多。楼主可以参考一下它的标签处理和其他的项目处理。
  • 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
      F" E2 w4 r' _  B5 H/ j& I' ]: t7楼

    该用户从未签到

     楼主| 发表于 2014-1-2 23:55:45 | 显示全部楼层
    本帖最后由 惟吾无为 于 2014-1-3 00:01 编辑
    ; Y: I- L. X0 }
    zjzengdongyang 发表于 2014-1-2 22:43
    2 I) V; E# P$ I% x  D! T我在xowa提交过不少bug,顺便问一下这个程序怎么处理rss,媒体文件(pdf,ogg,mp3,等等),以及带颜色的数学 ...
    + Z6 L( q6 D$ Q- M

    ! y6 D# ?, K! j3 J+ ~现在不会参考其他项目了(何况这个不能导出html). 我已经把维基的格式学的差不多了, 现在尽可能兼容维基并提高解析速度.7 O) b8 F1 L, x* c
    由于mdict不能处理多媒体,所以我只会转换图片. 发音不同于音乐, 所以任何音频也不会处理.
    ( T/ V* Q8 l% w- H' M* Z) O数学公式调用texvc处理.2 ?+ @6 H# k- C
    维基字典暂时不会考虑. 等我把维基百科做好了再说.
    . R5 Y3 I- Z( H9 O6 O9 {----+ b- I* k& u: t: Q' E
    2 ^" r/ F" e  Y' T& H
    刚才看了下,基于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标签,忘了" [% o3 }2 g  [
    http://zh.wikipedia.org/wiki/Spe ... C%E4%BF%A1%E6%81%AF
    , i/ k+ b& ]. J$ f. L随便问一下,支持分类不?有没有可能从categorylinks.sql中提取?

    该用户从未签到

     楼主| 发表于 2014-1-30 16:16:45 来自手机 | 显示全部楼层
    zjzengdongyang 发表于 2014-1-29 14:26* Y# I) _6 q- c5 I" w% s
    这些解析器扩展标签、、、、、、、、、、、、、、、、、和支持不?好像还有一些html5标签,忘了
    - n( Z( s. }# l$ u" Y! W) Q6 L4 T在http:// ...
    " u: ^, [: _  q* W9 e
    nowiki pre math已处理
    / o2 z8 S% ^* l/ O, nref和gallery有计划。
    5 N+ X2 q: z# J其他的等模板解析完成后酌情支持。; v, j. m7 h! T3 [: E8 C

    该用户从未签到

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

    [LV.1]初来乍到

    发表于 2014-2-11 16:17:30 | 显示全部楼层
    我曾经想通过导入数据库的方式还原官方的mediawiki,安装了我觉得有关内容的插件。
    % X& ?5 ?0 R) }; v: H然后导入数据库,已经导入了十几个小时,结果我复制文件时按了Ctrl+c,但是在终端里按的。.........结果中断,我欲哭无泪啊。
    * F, V) u) {/ _: a看了看时间,心疼了一下电费,果断放弃。
  • TA的每日心情
    郁闷
    2018-12-17 20:03
  • 签到天数: 2 天

    [LV.1]初来乍到

    发表于 2014-2-11 16:22:14 | 显示全部楼层
    hyln9 发表于 2013-12-30 13:19
    # h$ n8 f' W4 I% m* b) f8 U前排贺电!非常感谢!( W/ ~1 U& b: L9 s

    ( l8 e% e2 m/ r6 U1 G' i3 ~8 r1 F有好多话先留着,这里先补充一句,xml分割恰好可以用我破解的这个http://www.pdaw ...

      ]; \# k7 `6 r3 u
    : s( {6 w$ p; _9 ^* I) H他的这玩意,我根本用不了。本人在xp里琢磨了半个多小时。最后受不了,打开OllyDbg,自己动手,结果我爸回来了,果断关机。; u) [6 R- S4 P3 W- T

    该用户从未签到

     楼主| 发表于 2014-2-13 16:12:19 | 显示全部楼层
    zjzengdongyang 发表于 2014-2-11 16:17 " P  g0 T: b* ]& |& N* ~
    我曾经想通过导入数据库的方式还原官方的mediawiki,安装了我觉得有关内容的插件。9 S4 p' ?2 ?- J8 K- F
    然后导入数据库,已经导 ...
    / P# O! O# @2 u
    哈哈, 我也导过, 也欲哭无泪过, 已然绝望, 所以整这...

    该用户从未签到

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

      |3 A, m( v$ |; h1 g3 q你爸?你多大了?
  • TA的每日心情
    郁闷
    2018-12-17 20:03
  • 签到天数: 2 天

    [LV.1]初来乍到

    发表于 2014-2-23 14:07:31 | 显示全部楼层
    hyln9 发表于 2014-2-13 23:31 0 f8 d" d: V, e
    你爸?你多大了?

    + @& P" l. {6 a9 ~2 B; I+ b15 岁

    点评

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

    该用户从未签到

    发表于 2014-3-6 23:07:05 | 显示全部楼层
    好吧,你们的技术贴..让我乱入一下." h4 m. T; s5 f6 F. l
    看了一遍没看懂,
    3 {( v6 i  j0 ?! `# a) N好奇的是什么时候会有新的,图文版的wiki词典呢..
    6 V+ D4 V; u  w4 U2 h现在还在用2012年iwiki的那个.6 N$ N; {+ ?: ?0 X2 X4 o
    您需要登录后才可以回帖 登录 | 免费注册

    本版积分规则

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

    GMT+8, 2024-4-29 17:14 , Processed in 0.078369 second(s), 15 queries , MemCache On.

    Powered by Discuz! X3.4

    Copyright © 2001-2023, Tencent Cloud.

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