• 再说Mdx的字典文件处理


    再说Mdx的字典文件处理

    上次说了Mdx的字典文件的处理并不难,难的是出现个例就是麻烦事。如音标的处理。在《21英汉大词曲》里的音标用方括号来标识。但在这本词典里,用方括号的还不止这一种,还有别的如“[口语]”、“[美国英语]”、“[俚语]”等等,在EmEditor里查找:\[[^一-龥]{0,50}\]可以查找所有的音标,但第一个就出例外了。第一个是 a [强ei,弱ə]就是例外。还有多少个例外呢?

    就《21英汉大词曲》而言,经过粗略的整理,呈下图中的格式:

    图一

    第一种,单词+Tab+单词+1……

    第二种,单词+Tab+单词+词性.1……

    第三种,单词+Tab+单词+音标+1……

    第四种,单词+Tab+单词+音标+词性.1……

    但作为一个三维数据表,我需要的是这样

    图二

    所以,很多的努力都是要把图一的柱子变成图二。

    用emEditor来做,方便是方便,就怕出现例外。实际上也确实存在例外。以至于到现在为止我的词典数据都是残缺的。为什么残缺?就是因为出现了例外。好在例外毕竟是少数,也就将就用了。

    ……

    有时候,灵感远比技术值钱得多。一旦灵感来了,技术就是小菜一碟

    所有的mdx字典文件都有一个特点,就是主单词(或被查询词)后面都有一个Tab,这为做成二维数据表提供了极大的方便。

    将mdx文件稍作处理后,成下面图三的样子:

    图三

    保存好退出。

    用Access导入。为什么要用Access导入成数据表?过程中发现,从TXT文本导入数据表,Access比Sql Server好用。所以要过度一下。

    成功后再导入到SQL

    图四

    因为要把F2里与F1相同的内容处理掉,用replace()函数。但不能直接用。为什么?还是怕出现例外。比如说,主单词是abandon,

    图五

    看到在abandon这个词条里有那么多个abandon,如果现在用replace(),就会把所有的abandon都替换掉了。上面说的灵感来了!就是把词条中的第二个abandon再加上几个字符放到字段F3里。

    update [GYYQ].[dbo].[21世纪大英汉词典]

    set f3=left(f2,len(f1)+5)

    先查询一下看看结果:

    图六

    对!要的就是图六的这个效果。

    接下去要把F2中与F3相同内容的部分去掉,等处理完后再加回来。

    update [GYYQ].[dbo].[21世纪大英汉词典]

    set f2=replace(F2,F3,'')

    结果如图七

    图八

    这时候就可以把F3中与F1相同的内容替换掉了。

    update [GYYQ].[dbo].[21世纪大英汉词典]

    set f3=replace(F3,F1,'')

    处理好的如下图:

    图九

    再把处理好的内容加回到F2

    图十

    这就是想要的格式了。不过还差一步,要把音标抽出来。所以,再次把F3替换成Null备用。

    注意:SQL的Charindex()函数查找的位置是字段中第一个出现的位置。现在要把音标抽出来,就要定位字段F2中第一个出现“]”的位置,即:Charindex(‘)’,F2)。但这样就把所有的“]”都定位出来了。

    图十一

    很显然,图十一不是想要的结果。

    观察F2目前的数据,看到那些有音标的词条都以“[”开头。但在SQL里,where f2 like ‘[%’ 是不行的。需要一个转义,即

    where f2  like '/[%' escape '/'

    图十二

    这才是想要的结果。

    update [GYYQ].[dbo].[21世纪大英汉词典]

    set f3=left(f2,charindex(']',f2))

    where f2  like '/[%' escape '/'

    图十三

    接近尾声了!还差最后一步,就是用F3的内容去年F2里相同的,即把现在F2中的音标去掉。

    大功告成!

    图十四

    至于其它如把变形词抽出来,那是另一个需要解决的问题了。

  • 相关阅读:
    Nginx 部署vue项目 (Windows版)
    电脑基础知识-电脑不认新硬盘时该怎么办?
    数智随行 | 财务数字化转型的抓手:业务能力标准化
    洛谷P3758 可乐
    算力时代,算能(SOPHGO)的算力芯片/智算板卡/服务器选型
    [hello,world]这个如何将[ ] 去掉
    Redis 只会用缓存?20种妙用让同事直呼牛X(荣耀典藏版)
    tqdm使用
    java计算机毕业设计基于springboo+vue的学生毕业离校系统
    Day695.Spring Boot如何使用内嵌式的Tomcat和Jetty -深入拆解 Tomcat & Jetty
  • 原文地址:https://blog.csdn.net/whbtomt/article/details/127133969