掌上百科 - PDAWIKI

 找回密码
 免费注册

QQ登录

只需一步,快速开始

查看: 1255|回复: 2

[讨论] 我的维基解析器又要延期了。(对维基有兴趣的也进来聊下)

[复制链接]

该用户从未签到

发表于 2013-12-20 15:33:19 | 显示全部楼层 |阅读模式
本帖最后由 惟吾无为 于 2013-12-30 13:47 编辑 ; _; R) S4 h# E3 ~- X9 P1 E

4 l) \5 b) U3 W5 v/ D% A% c3 o" W- t我悔悟了, 简单版: https://www.pdawiki.com/forum/thread-11611-1-1.html
0 b7 F+ X7 E* x* `+ v, k. l! x% W9 V4 u9 p; U
-------
6 ~* B. n- a$ |: A8 Y: N5 A& f之前都是以2012年9月的转储文件做为分析参考的。. U2 @" A. Y% a8 E6 g- j

6 N8 s3 j3 F, J0 w( v月初完成了一个解析器,但是速度很慢。1分钟也不过几个页面,达不到实用的地步。如果不处理模板的话,1分钟可以处理2-5k个页面。一个小时不到就把zhwiki20131120的xml解析完了。
7 s% F* s( s! M. d2 E
, [; Y" n! A) G' P# ]$ M! h可是如今连中文维基也部署了lua脚本。都有一个专门的名字空间:模块(module)。- K4 M2 W  T' C; ~
调用 {{#invoke| 模块名 |函数名}}就可以在服务器运行那个模块的指定函数。
) I9 U' X: t* ?( C, h! n" d% p  x/ ]1 \4 z4 j) |/ a
加之之前的解析器写的不咋样,排个错超级麻烦,所以我打算重写,最好实现维基的lua运行环境。
' v  `0 h, j( q* G! W6 `' E  J; Q% K- L8 P0 H% Q8 r$ s0 f4 k
这是第二次延期了,所以专门开个帖说下。
7 f. I4 U6 v5 M, c7 W0 x9 S, k" h, E* l' \  C' n% m8 `
大家也可以说下你们的期望下限,说下满足哪些功能就够了。到时我好优先处理。
+ d% {& v( X7 }# U意见收集日期截至1月1日。到时我说不定就回家了。家里没网的。

评分

1

查看全部评分

该用户从未签到

 楼主| 发表于 2013-12-20 15:45:34 | 显示全部楼层
本帖最后由 惟吾无为 于 2013-12-30 18:56 编辑
& j' C# R/ |# l2 ^' T
2 J" a8 L% B  d8 H9 t6 q一些细节或者备注。有人可能希望知道。) x! S' X4 T& G- h, O; {
1. 1小时解析转储。
( V) u8 Q. _" [6 x* 处理解压后的单个xml文件. 大小好像是4196M
) \- F2 @0 S3 Q) I  `' {* lua只能使用单核, 我的cpu 1.6 GHz. 你们的高些会快些.
& O, O; l( ~& {% H/ j* 内存使用近1G, 峰值可能1.3G. 我的总内存3.5G. 可用3G. 你们的内存应该够吧?* x8 K' z9 y' W4 f9 n. h; `- \
* 处理了 各种列表(\n[*#:; =-]), 链接, 粗斜体, 表格, 6 g! t  U1 m; e
* 模板未处理, 公式未处理. 引用未处理, 分类未处理.7 @9 b, ^/ M, A+ y3 ^
* 没有字词转换. 所以还是繁简混合的.# A) W4 H3 L7 b- k9 {( R

& F0 W7 i3 J2 S$ d% t( ]; ^2. 数学公式 (update@20131223): [" B" S: ?0 i9 L; y* O8 X$ Z
我打算先写出个简单的解析器. 只要支持基本格式就够了. 并针对enwiki做下优化.  L9 v$ T! V  T
* 调用texvc渲染公式为png.
1 D# ^* o$ k6 ~. Y3 A; d/ ~* 公式预处理: 替换连续的空白字符([ \t\n]+)为单个空格( ). 并去掉前导空格. 后缀不处理.
4 _! C6 }6 S: r& x* 可以读取转储文件或公式列表, 生成公式的md5值对照表(hashfile)及其图片.
4 {- C6 F& ^, @5 F* 解析器需要先缓存 公式md5对照表(hashfile) 才能生成图片链接.
& d6 D1 y( k0 v6 r* 未缓存的公式会临时解析, 失败的直接丢弃. 不会导致解析中断.. \& n0 \( E: A- i5 w
* 目前公式转换器仅使用单核. 我的电脑转换7.3w个公式为图片花了近2个小时.
0 I+ E) y: t, w% x0 H5 i8 R9 U/ @  v* 12.24测试使用多核(我的4核). 结果如下. 99.88% | time: 39m04s,     3s | formula ok:  85036 error:  109 dup:38661(根据我的预处理方式发现的重复公式)
/ S  j0 h5 Y1 R8 m/ d. {- a     实际生成图片73110(我暂时没办法实现texvc的预处理过程, 所以重复的有85036-73110个).
$ c1 p. S/ @3 R7 ]     这个使用多核是通过连续创建 逻辑cpu个数*2 的进程来实现的. 我的lua脚本还是单核的. 依次读取那些进程的输出(会等待进程结束), 所以花费的时间大于半小时.! y8 K  [" R, C: N
* 12.24-17:00 优化了下, 好像之前的有些重复公式没找到. 100.03% | time: 33m50s,     0s | formula write:  75392 error: 104 dup:  48309
8 K' k7 R0 b* A+ \, ?: L% b) X     当然, 前面的100.03%. 就无视了吧...% L3 i. B% y( r3 E- |) q0 i- R, Y
/ G3 F. Q$ J* b2 }7 E
3. 多文件支持(update@20131228)
, C+ Q# Q3 m: T2 s; ?% n7 E( d之前的脚本不支持多文件. 这几天总算在原有的基础上加入多文件支持了.
9 `& r' N: X4 q3 L: v今天测试了enwiki的数学公式. 结果tmpfs连续两次因为inode用尽而"空间不足". 这次才终于发现不是因为内存用尽... 惭愧. 今天一天算是浪费了...
; @& q0 y6 l8 d. H; L+ A1 M7 ~enwiki 公式转图片的进度 72.91% | time:  2h15m, 50m09s | formula write: 219013 error: 243 dup: 125078$ |' o! y" V% Y) u) |4 f0 C
我现在又重新开始转了. 又要重复读一遍所有的xml文件... 估计又得一个半小时才能完成...8 w; s; `$ c+ E1 ~: Q6 j: W8 O6 D" H+ R

5 h3 {% N! |( k解析器也加入多文件支持了. 严格按照参数所给的文件顺序读取. 用户可自行调整文件顺序.
/ h1 ?1 [! k# |4 C; p解析器仍是单线程的, 但可开多个进程, 各自解析不同的xml.5 z1 A4 |8 T) N  d6 E( Y/ f2 P1 o% d+ r% G
) @, k! m% o/ V& M
我这几天也写好了xml分割脚本和文本合并脚本.% T% m2 j! @! D6 d  W6 h: R9 E

( a$ F5 ~- i3 `+ G# z* d4. 危机(update@20131229), `. j6 T$ |  v+ c) a9 H
1. lua默认不支持大文件. 大于2G的没法正常操作. 我的lua是自己编译的, 开启了大文件支持...
7 G0 M) Y& p& d2. 还有dofile时的路径转换也没考虑到windows...文件打开时没加b标记. 也可能有问题... 我会尽量照顾下windows用户的." J* L; Z# ?4 L' J$ g$ M! {
9 x" i1 y  F/ _& ?. V) _1 J
5. 新的希望(update@20131230)
% n& q& F) i0 B5 @+ ^: H经过4个小时的努力, 终于在18:20编译出了支持大文件读写的windows版lua.
' }% v, s  z% K  N* {7 Q& Z. B& {9 X; q4 M6 Y; D0 O8 T3 s1 p' K" a8 g
...
  • TA的每日心情
    开心
    2022-11-10 09:48
  • 签到天数: 466 天

    [LV.9]以坛为家II

    发表于 2013-12-22 21:20:22 | 显示全部楼层
    我对这些不太懂,有需求的说说建议啊!
    您需要登录后才可以回帖 登录 | 免费注册

    本版积分规则

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

    GMT+8, 2025-5-9 00:47 , Processed in 0.020833 second(s), 22 queries .

    Powered by Discuz! X3.4

    © 2001-2023 Discuz! Team.

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