掌上百科 - PDAWIKI

 找回密码
 免费注册

QQ登录

只需一步,快速开始

查看: 1161|回复: 2

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

[复制链接]

该用户从未签到

发表于 2013-12-20 15:33:19 | 显示全部楼层 |阅读模式
本帖最后由 惟吾无为 于 2013-12-30 13:47 编辑 ; j0 [# o  g  u  r

1 A  Y+ M& n6 h8 k0 N* _我悔悟了, 简单版: https://www.pdawiki.com/forum/thread-11611-1-1.html$ a2 l9 p, Q6 }/ ^

0 m( J$ ^, X  U. Y1 z& N-------
) o+ b" D  q1 N0 s9 u之前都是以2012年9月的转储文件做为分析参考的。) r$ ?; ~& g4 X+ p- X

& i: {, O! L. V$ f8 h: `月初完成了一个解析器,但是速度很慢。1分钟也不过几个页面,达不到实用的地步。如果不处理模板的话,1分钟可以处理2-5k个页面。一个小时不到就把zhwiki20131120的xml解析完了。+ e( l& b! R- p+ j2 M

( c% S, p) t* C! R4 G, k) j可是如今连中文维基也部署了lua脚本。都有一个专门的名字空间:模块(module)。! `; y$ s) I9 z& R6 o$ M
调用 {{#invoke| 模块名 |函数名}}就可以在服务器运行那个模块的指定函数。
# S1 j2 O1 v( @2 ?  e7 ]) J! \, R
加之之前的解析器写的不咋样,排个错超级麻烦,所以我打算重写,最好实现维基的lua运行环境。
* q4 c: V3 R  ]$ v/ }! [2 A
. V/ y$ f6 j; [2 v4 [4 ?这是第二次延期了,所以专门开个帖说下。
6 b6 e. w5 `0 Y( n
0 R. v3 h7 U1 m' V) q- {6 P9 G3 R大家也可以说下你们的期望下限,说下满足哪些功能就够了。到时我好优先处理。
& g0 l0 T! @0 v& }) U/ l: A意见收集日期截至1月1日。到时我说不定就回家了。家里没网的。

评分

1

查看全部评分

该用户从未签到

 楼主| 发表于 2013-12-20 15:45:34 | 显示全部楼层
本帖最后由 惟吾无为 于 2013-12-30 18:56 编辑
$ H5 S6 o( d! b9 z: @# m% s5 R8 K& K8 b7 T5 u
一些细节或者备注。有人可能希望知道。
) H* o% y/ t  Y. _, B$ Z6 _2 l4 @1. 1小时解析转储。5 G- o' v. B- Z9 F8 o
* 处理解压后的单个xml文件. 大小好像是4196M8 C0 H' N5 G6 c6 D. y4 }9 O
* lua只能使用单核, 我的cpu 1.6 GHz. 你们的高些会快些./ E3 G9 h  i7 I  {( ]! m1 E
* 内存使用近1G, 峰值可能1.3G. 我的总内存3.5G. 可用3G. 你们的内存应该够吧?
' s7 T1 p& [2 ~( R- _* 处理了 各种列表(\n[*#:; =-]), 链接, 粗斜体, 表格,
+ m% f& m" ?$ C: U" m* f" g; d* 模板未处理, 公式未处理. 引用未处理, 分类未处理.7 p$ H2 f/ o) V  h% D0 `. G6 A
* 没有字词转换. 所以还是繁简混合的.  P' v& q5 X/ M9 I. E

: v* `! i$ k9 V7 d5 G7 n& L$ H% ^2. 数学公式 (update@20131223)2 w: \/ P2 H3 A: P
我打算先写出个简单的解析器. 只要支持基本格式就够了. 并针对enwiki做下优化.
" V9 e6 g: N/ k* 调用texvc渲染公式为png.
: o$ [$ b) S. X$ C- L9 S# u* 公式预处理: 替换连续的空白字符([ \t\n]+)为单个空格( ). 并去掉前导空格. 后缀不处理.# Q# z0 K- x; U% o! t
* 可以读取转储文件或公式列表, 生成公式的md5值对照表(hashfile)及其图片.  c3 I* C6 C# F. R0 w
* 解析器需要先缓存 公式md5对照表(hashfile) 才能生成图片链接.4 \4 y6 C5 E1 m: \9 M0 h, m
* 未缓存的公式会临时解析, 失败的直接丢弃. 不会导致解析中断.
; t, H$ J6 {! F* 目前公式转换器仅使用单核. 我的电脑转换7.3w个公式为图片花了近2个小时.
5 `0 V& C" {+ N4 n8 {+ o8 `- s% ]4 f* 12.24测试使用多核(我的4核). 结果如下. 99.88% | time: 39m04s,     3s | formula ok:  85036 error:  109 dup:38661(根据我的预处理方式发现的重复公式)' U7 _4 `. g  K! `
     实际生成图片73110(我暂时没办法实现texvc的预处理过程, 所以重复的有85036-73110个). : [7 y0 M* o8 K" y& a! [
     这个使用多核是通过连续创建 逻辑cpu个数*2 的进程来实现的. 我的lua脚本还是单核的. 依次读取那些进程的输出(会等待进程结束), 所以花费的时间大于半小时.- n+ A+ Q5 X8 f) g- ]
* 12.24-17:00 优化了下, 好像之前的有些重复公式没找到. 100.03% | time: 33m50s,     0s | formula write:  75392 error: 104 dup:  48309
  t+ [: I; d9 j! o$ }. V     当然, 前面的100.03%. 就无视了吧...
% ?% t1 w, _% e% y  Z9 L2 ~
- D2 n& Q# U" O& A; c3 o5 d0 |% `3. 多文件支持(update@20131228)6 e- J; e& Z$ u+ V/ w- f/ J6 `. m
之前的脚本不支持多文件. 这几天总算在原有的基础上加入多文件支持了.+ g, Y7 K& _2 }% |9 v
今天测试了enwiki的数学公式. 结果tmpfs连续两次因为inode用尽而"空间不足". 这次才终于发现不是因为内存用尽... 惭愧. 今天一天算是浪费了...
! }2 S* R% H8 ^; F* tenwiki 公式转图片的进度 72.91% | time:  2h15m, 50m09s | formula write: 219013 error: 243 dup: 125078' `, ~: m0 B* T( P
我现在又重新开始转了. 又要重复读一遍所有的xml文件... 估计又得一个半小时才能完成...
1 N# D# q4 p5 a3 ^4 h
! T$ q4 t8 o. x8 ~( G解析器也加入多文件支持了. 严格按照参数所给的文件顺序读取. 用户可自行调整文件顺序./ I! K7 W8 E/ P/ l) \* j3 \
解析器仍是单线程的, 但可开多个进程, 各自解析不同的xml.
# h3 {! f) K5 M' c) x8 p
" r6 L& Z( x& E% z4 C( F% A我这几天也写好了xml分割脚本和文本合并脚本.
- d+ E8 e. o  s; ^
; a& U! S2 c( j! D4. 危机(update@20131229)
% v2 _- P: L6 c0 P1. lua默认不支持大文件. 大于2G的没法正常操作. 我的lua是自己编译的, 开启了大文件支持...
! \! m2 g6 A5 R2. 还有dofile时的路径转换也没考虑到windows...文件打开时没加b标记. 也可能有问题... 我会尽量照顾下windows用户的.
2 A: A9 w7 F6 e% b& u% w8 a2 S  Z/ E/ w5 ~& R
5. 新的希望(update@20131230); H5 W/ H' m5 |, R3 p
经过4个小时的努力, 终于在18:20编译出了支持大文件读写的windows版lua.
4 D2 s. t! [  t" j+ D6 K" q3 l
...
  • TA的每日心情
    开心
    2022-11-10 09:48
  • 签到天数: 466 天

    [LV.9]以坛为家II

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

    本版积分规则

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

    GMT+8, 2025-4-17 23:29 , Processed in 0.022415 second(s), 25 queries .

    Powered by Discuz! X3.4

    © 2001-2023 Discuz! Team.

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