自动判别日文类型网页的方法技术领域
本发明涉及自动判别日文类型网页的方法,具体涉及该方法可自动判断所访问的
网页是否为日语。
背景技术
互联网正在以爆炸式的速度在全球发展,在internet上用户可以访问的网页数量
也越来越多。其中,互联网访问的一个特点是用户可以在接入网络的任意一个终端上,访问
到全世界各地的网页信息。而这些网页中,所使用的语言是多种多样的。包括中文、英文、日
文等等各个民族所使用的语言。对特定的用户来说,其访问网页是存在语言偏好的。例如,
可能某些用户只需要访问用特定语言撰写的网页。以搜索引擎google为例,对来自中国大
陆地区的用户,google给出了特定的语言选项:
如图1所示的左下角的“简体中文网页”,即给出了特定语言的网页。因此,对互联
网上的网页来说,非常需要一种良好的系统,能够自动的对网页的语言类型进行识别。
如图2所示在进行日文网页识别时,有以下主要技术难点:
特点一:日语存在汉字,易与中文网页混淆。
例如上述日文网页,由于日语本身的特点,存在大量中文汉字,给判别网页带来障
碍。
特点二:网页本身编码方式复杂。
由于历史原因,当今互联网上网页编码的方式极为复杂。对于日文网页来说,既可
能采用国际通行的unicode编码方式,也可能会使用日文专用的编码方式;而日文专用编码
方式也有sjis,ujis等多种。
发明内容
针对现有技术中的上述不足之处,本发明专利提出一种针对日文语言网页的自动
化识别方法,该方法可用于对所访问的网页,自动的判断语言是否为日语。
本发明采取的技术方案如下:
自动判别日文类型网页的方法,包括如下步骤,
第一步,获取网页的数据头和数据体;
第二步,在网页数据头中,读取包头中的对应字段code_string;所述code_string
字段的选取有2种方方式,在网页数据头中,检测是否满足以下条件:
bool is_xml=html_start!=NULL&&(strncmp(html_start,"<rss",4)==0||
strncmp(html_start,"<?xml",5)==0);
根据is_xml的返回值进行如下操作:
假如is_xml的返回值为1,则设置code_string为"encoding";
假如is_xml的返回值为0,则设置code_string为"charset";
第三步,数据归一化,归一化方法如下:
在数据头中寻找满足code_string的字段,当匹配到以后,寻找code_string的
“=”号之后,“>”之前的字符串,并进行归一化处理,处理的过程包括去除空格、转换为小写
及去除特殊字符,特殊字符指非英文字母和数字的字符均为特殊字符;
第四步,判断并记录code_string的类型,code_string的类型包括以下3种类型,
Type-I:code_string匹配以下任意一种字符串:
sjis,
ujis,
shiftjis,
iso2022jp,
eucjp,
eucjap;
Type-II:code_string匹配以下任意一种字符串:
gb,
big,
autocht,
Type-III:code_string为空;
第五步,从网页的数据体content中提取文本,其方法如下;
根据前面提取的type,按照以下规则取verify_length:
对于Type-I:verify_length=128,从数据体开头开始,取content中length=128
的文本;
对于Type-II:verify_length=256;在content开头取length=128,content中间
取length=128的文本;
对于Type-III:verify_length=512;在content开头取length=256,content中
间取length=256的文本;
第六步,设置初始置信值,置信值Confidence_value设置如下:
Type-I的Confidence_value=0.98;
Type-II的Confidence_value=0.5;
Type-II的Confidence_value=0.3;
第七步,取出verify_length对应的content字符,依次进行以下判断:
对Type-I,依次判断字符编码是否满足:
如果p[0]==0x1B,则判断:
verify_jp_jis(),
p[1]=='('&&(p[2]=='B'||p[2]=='J'||p[2]=='I')
或
p[1]=='$'&&(p[2]=='@'||p[2]=='B');
若满足,则设置verify_length=verify_length+3,verify_length初始值为0,
如果满足pSrc>0x7f,则进行以下判断:
A.判断是否满足verify_jp_sjis(),
B.判断是否满足verify_jp_euc(),
其中verify_jp_sjis()判断条件为:
((p[0]>=0x81&&p[0]<=0x9F)||(p[0]>=0xE0&&p[0]<=0xEF)||p[0]==0xFA
||p[0]==0xFB)&&((p[1]>=0x40&&p[1]<=0x7E)||(p[1]>=0x80&&p[1]<=0xFC)),
verify_jp_euc()判断条件为:
(pstr[0]==0x8E)&&(pstr[1]>=0xA1)&&(pstr[1]<=0xDF)||((pstr[0]>=
0xA1)&&(pstr[0]<=0xFE)&&(pstr[1]>=0xA1)&&(pstr[1]<=0xFE)),
若满足条件A或者B,则verify_length=verify_length+2;
但所有文本提取完毕后,计算verify_ratio=verify_length/verify_length;
对Type-II,依次判断字符是否满足以下任意条件:
verify_jp_fn():
((p[0]==0xA4)||(p[0]==0xA5))&&(p[1]>=0xA1)&&(p[1]<=0xF6),则
verify_length=verify_length+2;
verify_jp_big():
p[0]==0xC6&&p[1]>=0xDB&&p[1]<=0xFE))||(p[0]==0xC7&&p[1]>=
0x40&&p[1]<=0x7E)||(p[0]==0xC7&&p[1]>=0xA1&&p[1]<=0xFE),
则verify_length=verify_length+2;
verify_jp_gb():
p[0]>=0x81&&p[0]<=0xfe&&p[1]>=0x40&&p[1]<=0xfe&&p[1]!=0x7f&&p[0]
p[1]∈JAP_DICT1;
则verify_length=verify_length+2;
verify_jp_special():
p[0]>=0x81&&p[0]<=0xfe&&p[1]>=0x40&&p[1]<=0xfe&&p[1]!=0x7f&&p[0]
p[1]∈JAP_DICT2;
则verify_length=verify_length+4;
当所有文本计算完毕后,取verify_ratio=verify_length/verify_length;对
Type-III,分别按照Type-I和Type-II的规则计算verify_ratio1和verify_ratio2;取
verify_length=max(verify_length1,verify_length2);
第八步,计算日文文本类型的置信值,当confidence_value+verify_ratio>1时,
判断当前网页的语言类型为日文。
第七步所述的verify_length=verify_length+4,若出现日文特有汉字,则加大
置信值confidence_value+verify_ratio。
采用上述技术方案,包括以下有益技术效果:
1.本方法适用于不同的网页编码方法;并设置了Type-I,Type-II,Type-III策略
进行日文网页识别。
2.能对包含汉字的网页进行判别,区分中文网页和日文网页。
3.综合使用了网页数据头和数据体的信息进行置信度验证,提高了日文网页识别
的准确度。
附图说明
图1示例性示出了简体中文网页的示例图;
图2示例性示出了日文网页的示例图;
图3示例性示出了本发明的流程图。
具体实施方式
下面通过具体的实施例并结合附图对本发明做进一步的详细描述。
如图3所示,本发明包括步骤如下:
1.获取网页的数据头和数据体;
具体过程是获得网页的原始html文件,在其中找到<head>标签和</head>标签中
间的部分称为数据头,<body>标签和</body>标签中间的部分称为数据体。
2.在网页数据头中,读取包头中的对应字段code_string,该code_string字段的
选取有2种方方式,在网页数据头中,检测是否满足以下条件:
bool is_xml=html_start!=NULL&&(strncmp(html_start,"<rss",4)==0||
strncmp(html_start,"<?xml",5)==0);
根据is_xml的返回值进行如下操作:
假如is_xml的返回值为1,则设置code_string为"encoding";
假如is_xml的返回值为0,则设置code_string为"charset";
3.数据归一化,即归一化操作,操作如下:
在数据头中寻找满足code_string的字段,当匹配到以后,寻找code_string的
“=”号之后,“>”之前的字符串,并进行归一化处理:
A.去除空格,
B.转换为小写,
C.去除特殊字符;特殊字符指非英文字母和数字的字符均为特殊字符。
4.判断并记录code_string的类型,
分为以下3种类型:
Type-I:code_string匹配以下任意一种字符串;
sjis;
ujis;
shiftjis;
iso2022jp;
eucjp;
eucjap;
Type-II:code_string匹配以下任意一种字符串;
gb;
big;
autocht;
Type-III:code_string为空。
5.从网页的数据体content中提取文本,
根据前面提取的type,按照以下规则取verify_length:
Type-I:verify_length=128,从数据体开头开始,取content中length=128的文
本;
Type-II:verify_length=256;在content开头取length=128,content中间取
length=128的文本;
Type-III:verify_length=512;在content开头取length=256,content中间取
length=256的文本;
6.设置初始置信值Confidence_value。
Type-I的Confidence_value=0.98;
Type-II的Confidence_value=0.5;
Type-II的Confidence_value=0.3。
7.取出verify_length对应的content字符,依次进行以下判断:
对Type-I,依次判断字符编码是否满足:
如果p[0]==0x1B,则判断:
verify_jp_jis(),
p[1]=='('&&(p[2]=='B'||p[2]=='J'||p[2]=='I')
或
p[1]=='$'&&(p[2]=='@'||p[2]=='B');
若满足,则设置verify_length=verify_length+3,verify_length初始值为0;
pSrc>0x7f如果满足,则进行以下判断:
A.判断是否满足verify_jp_sjis();
B.判断是否满足verify_jp_euc();
其中,verify_jp_sjis()判断条件为:
((p[0]>=0x81&&p[0]<=0x9F)||(p[0]>=0xE0&&p[0]<=0xEF)||p[0]==0xFA
||p[0]==0xFB)&&((p[1]>=0x40&&p[1]<=0x7E)||(p[1]>=0x80&&p[1]<=0xFC));
verify_jp_euc()判断条件为:
(pstr[0]==0x8E)&&(pstr[1]>=0xA1)&&(pstr[1]<=0xDF)||((pstr[0]>=
0xA1)&&(pstr[0]<=0xFE)&&(pstr[1]>=0xA1)&&(pstr[1]<=0xFE));
若满足条件A或者B,则verify_length=verify_length+2;
但所有文本提取完毕后,计算verify_ratio=verify_length/verify_length;
对Type-II,依次判断字符是否满足以下任意条件:
verify_jp_fn():
((p[0]==0xA4)||(p[0]==0xA5))&&(p[1]>=0xA1)&&(p[1]<=0xF6);
则verify_length=verify_length+2;
verify_jp_big():
((p[0]==0xC6&&p[1]>=0xDB&&p[1]<=0xFE))||(p[0]==0xC7&&p[1]>=
0x40&&p[1]<=0x7E)||(p[0]==0xC7&&p[1]>=0xA1&&p[1]<=0xFE);
则verify_length=verify_length+2;
verify_jp_gb():
p[0]>=0x81&&p[0]<=0xfe&&p[1]>=0x40&&p[1]<=0xfe&&p[1]!=0x7f&&p[0]
p[1]∈JAP_DICT1;
则verify_length=verify_length+2,其中,JAP_DICT1和JAP_DICT2的日文词典
内容请详见下文。
verify_jp_special():
p[0]>=0x81&&p[0]<=0xfe&&p[1]>=0x40&&p[1]<=0xfe&&p[1]!=0x7f&&p[0]
p[1]∈JAP_DICT2;
则verify_length=verify_length+4,出现日文特有汉字,如“発”,则加大置信
值;当所有文本计算完毕后,取verify_ratio=verify_length/verify_length;
对Type-III,分别按照Type-I和Type-II的规则计算verify_ratio1和verify_
ratio2;取verify_length=max(verify_length1,verify_length2)。
8.计算日文文本类型的置信值:
当confidence_value+verify_ratio>1时,判断当前网页的语言类型为日文。
JAP_DICT1
亜哀爱悪握圧扱安暗案衣以位依伟囲医委威尉意慰易为异移维纬胃违遗域育一
壱逸芋印员因姻引饮院阴隠韵右宇羽雨运云営影映栄永泳英卫咏锐液疫益駅悦谒越阅円
园宴延援沿演炎烟猿縁远铅塩汚王凹央往応押横欧殴奥桜翁黄亿屋忆乙卸恩温穏音下化
仮何価佳加可夏嫁家寡科暇果架歌河火祸稼个花荷华菓课货涡过蚊我画芽贺雅饿介会解
回块壊快怪悔懐戒拐改械海灰界皆絵开阶贝劾外害慨概涯街该垣吓各拡格核壳获确获覚
角较郭阁隔革学岳楽额挂潟割喝括活渇滑褐辖且株刈乾冠寒刊勘勧巻唤堪完官寛干干患
感惯憾换敢棺款歓汗汉环甘监看管简缓缶肝舰観贯还鉴间闲関陥馆丸含岸眼岩顽颜愿企
危喜器基奇寄岐希几忌挥机旗既期棋弃机帰気汽祈季纪规记贵起轨辉饥骑鬼伪仪宜戯技
拟欺犠疑义议菊吉吃诘却客脚虐逆丘久休及吸宫弓急救朽泣球究穷级纠给旧牛去居巨拒
拠挙虚许距渔鱼享京供竞共凶协叫境峡强恐恭挟教桥况狂狭矫胸胁兴郷镜响惊仰凝暁业
局曲极玉勤均斤琴禁筋紧菌襟谨近金吟银九句区苦駆具愚虞空偶遇隅屈掘靴缲桑勲君薫
训群军郡系倾刑兄启型契形径恵庆憩掲携敬景渓系経継茎蛍计警軽鶏芸迎鲸剧撃激杰欠
决洁穴结血月件倹健兼券剣圏坚嫌建宪悬検権犬献研绢県肩见谦贤轩険顕験元原厳幻弦
减源玄现言限个古呼固孤己库弧戸故枯湖夸雇顾鼓五互午呉娯后御悟碁语误护交侯候光
公功効厚口向后坑好孔孝工巧幸広康恒慌抗拘控攻更校构江洪港沟甲皇硬稿红绞纲耕考
肯航荒行衡讲贡购郊酵鉱钢降项香高刚号合拷豪克刻告国谷酷黒狱腰骨込今困垦婚恨恳
昆根混绀魂佐唆左差査砂诈锁座债催再最妻宰彩才采栽歳済灾砕祭斎细菜裁载际剤在材
罪财坂咲崎作削榨昨策索错册刷察撮擦札杀雑皿三伞参山惨散桟产算蚕賛酸暂残士子支
止氏仕史司矢使刺嗣四始姉姿市糸伺师志思指施旨枝死祉私纸紫肢脂至视词诗试志谘资
赐雌饲歯事似侍児字寺慈持时次滋治玺磁示耳自辞式识轴七执失室湿漆疾质実芝舎写射
舍赦斜煮社者谢车遮蛇邪借勺尺爵酌釈若寂弱主取守手朱殊狩珠种趣酒首儒受寿授树需
囚周宗就州修愁拾秀秋终习臭舟众袭周酬集丑住充十従柔汁渋獣縦重铳叔宿淑祝缩粛塾
熟出术述俊春瞬准循旬殉准润盾纯巡遵顺処初所暑庶绪署书诸助叙女如序徐除伤偿胜匠
升召商唱奨宵将小少尚床彰承抄招掌升昭晶松沼消渉焼焦照症省硝礁祥称章笑妆绍肖冲
讼证诏详象赏钟障上丈乗冗剰城场常情条浄状畳蒸縄壌嬢譲醸锭嘱饰植殖织职色触食辱
伸信侵唇娠寝审心慎振新森浸深申真津神绅臣薪亲诊身辛进针震人仁刃寻甚尽迅阵酢図
吹垂帅推水炊睡粋衰遂酔锤随髄崇数枢据杉澄寸瀬亩是井世正生成西声制势姓征性政整
星婿晴清牲盛精圣制诚誓请逝青静斉税夕斥石赤昔只席惜析积籍绩责迹切拙接摂折设窃
节说雪绝舌仙先千占宣専川戦扇栓泉浅洗染潜旋线繊船荐践选迁銭铣鲜前善渐然全禅缮
塑措疎础祖租粗素组诉阻僧创双仓丧壮奏层想捜扫挿操早曹巣槽燥争相窓総草荘葬藻装
走送遭霜騒像増憎臓蔵赠造促侧则即息束测足速俗属贼族続卒存孙尊损村他多太堕妥惰
打駄体対耐帯待怠态替泰滞胎袋贷退逮队代台大第题滝卓宅択拓沢濯托浊诺但达夺脱棚
谷丹単叹担探淡炭短端胆诞锻団坛弾断暖段男谈値知地耻池痴稚置致遅筑畜竹蓄逐秩窒
茶嫡着中仲冲宙忠抽昼柱注虫衷贮丁庁吊张雕徴惩挑朝潮町眺聴胀肠调超跳长钓顶鸟勅
直朕沈珍赁镇陈坠追痛通冢渍坪亭低停侦贞呈堤定帝底庭廷弟抵提程缔艇订逓邸泥摘敌
滴的笛适哲彻撤迭鉄典天展店添転点伝殿田电吐涂徒斗渡登途都努度土奴怒倒党冬冻刀
唐塔岛悼投搭东桃栋盗汤灯当痘等答筒糖统稲到讨誊豆踏逃透陶头腾闘働动同堂导洞童
胴道铜峠匿得徳特督笃毒独読凸屯豚昙钝内南软难二尼肉日乳入尿任妊忍认宁热年念燃
粘悩纳能脳农浓把覇波派破婆马俳廃拝排败杯背肺辈配倍培媒梅买売赔陪伯博拍泊白舶
薄迫漠爆缚麦箱肌畑八钵発髪伐罚抜阀伴判半反帆搬板版犯班畔繁般藩贩范烦颁饭晩番
盘蛮卑否妃彼悲扉批披比泌疲皮碑秘罢肥被费避非飞备尾微美鼻匹必笔姫百表标氷漂票
表评描猫病秒苗品浜贫宾频敏瓶不付夫妇富布府怖扶敷普浮父符腐肤谱负赋赴附侮武舞
部封风伏副复幅服福腹复覆払沸仏物分喷坟愤
雰文闻丙并兵塀币平弊柄并闭陛米壁癖别偏编辺返遍便勉弁歩保舗捕浦补穂募
墓慕暮母簿仿俸包报奉宝峰崩抱放方法泡炮缝胞芳褒访豊邦饱乏亡傍剖坊妨帽忘忙房暴
望某棒冒纺肪膨谋贸防北仆墨扑朴牧没堀奔本翻凡盆摩磨魔麻埋妹枚毎幕膜又抹末茧万
慢満漫未味魅岬密脉妙民眠务梦无矛雾娘名命明盟迷铭鸣灭免绵面模茂妄毛猛盲网耗木
黙目戻问纹门匁夜野厄役约薬訳跃柳由油愉谕输愈唯友有勇幽悠忧犹裕诱游邮雄融优与
予余誉预幼容庸扬揺拥曜様洋溶用窑羊叶要谣踊阳养抑欲浴翌翼罗裸来頼雷络落酪乱卵
栏滥覧利吏里履理痢裏离陆律率立略流留硫粒隆竜虑旅虏了僚両寮料凉猟疗粮良量陵领
力绿伦厘林临轮隣塁涙累类令例冷励礼铃隷零霊齢丽暦歴列劣烈裂廉恋练连錬炉路露労
廊朗楼浪漏老郎六录论和话贿惑枠湾腕鹸堺
JAP_DICT2
亜悪圧扱囲壱隠営栄駅円縁塩汚応桜穏仮価菓壊懐絵拡覚楽潟渇刈勧巻寛歓観
関陥帰気戯犠拠挙郷暁駆勲恵掲渓経継蛍軽鶏撃倹剣検権県険顕験厳戸呉娯碁効広鉱黒
込歳済砕斎剤咲雑桟賛谘歯児実舎釈収従渋獣縦粛処奨渉焼乗剰畳縄壌嬢譲醸図粋酔瀬
斉摂専戦繊銭疎捜挿巣窓総荘騒蔵続駄対帯滝択沢単団弾値遅鋳庁徴町聴逓鉄転伝电稲
誊闘働峠徳読弐悩脳廃拝売発抜氷払仏雰変辺弁歩舗穂豊満黙戻薬訳様頼覧裏竜両猟塁
隷霊齢暦歴錬労枠鹸堺
本发明适用于不同的网页编码方法;并设置了不同的策略进行日文网页识别;对
包含汉字的网页进行判别,区分中文网页和日文网页;本发明综合使用了网页数据头和数
据体的信息进行置信度验证,提高了日文网页识别的准确度。
以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技
术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修
改、等同替换、改进等,均应包含在本发明的保护范围之内。