新世纪日汉双解大辞典 词头修复 经验分享

Markdown
2019-11-22T16:00:00Z 13:58PM
来讲一下这个日语词头是怎么优化的。
日语辞典,是我做过的词典中,最难做词头的辞典。
平假 片假 汉字

今天的问题是 词头里面有点,就是这个东西 · ,查词的时候不好输入,应该将这个点处理掉。

CASE 1

首先 平假 里面的点,是重音的意思(大概),所以直接去掉形成新词头就可以了。
比如说:はぐら·す 形成一个新词头 はぐらす,后一个跳转到前一个。

はぐらす
@@@LINK=はぐら·す
</>

CASE 2

汉字里面的点就不是重音的意思了,而是不同的写法,所以要以点为界限,分开来俩,分别跳回原词头。
比如这个词头,かわら【河原·川原】 就应该做成:

河原
@@@LINK=かわら【河原·川原】
</>
川原
@@@LINK=かわら【河原·川原】
</>

CASE 3

一个词头既有平假又有汉字呢?
请依序执行 CASE 1, CASE 2

附上代码:

说明:
  • 代码只是参考,处理过程遇到的问题我没办法写出来
  • 源文件我就不放了,处理的时候是要随机应变的,比如说,生出来新词头,会不会和原词头碰撞之类的问题,就只能见到了再处理做决定
  • 代码问题可提,但是不保证完全解答。
  • 学习思路是最重要的
import sys

# progress_bar
def view_bar(num,total):
    rate = num / total
    rate_num = int(rate * 100)
    #r = '\r %d%%' %(rate_num)
    r = '\r%s>%d%%' % ('=' * rate_num, rate_num,)
    sys.stdout.write(r)
    sys.stdout.flush


citou_list = []


read1 = open('half_done.txt', 'r', encoding="utf8").readlines()
write1 = open('dian_citou.txt', 'w+', encoding="utf8")

count = 0
total = len(read1)

while count < total:
    if count%2 == 0:
        # 说明是词头
        citou_list.append(read1[count][:-1])  # 不要换行符 个人喜好
    count += 1
    view_bar(count, total)

count = 0
total = len(citou_list)
print("test")

for citou in citou_list:
    if '·' in citou:
        if '【' in citou:
            jiaming = citou[:citou.find('【')]
            hanzi = citou[citou.find('【')+1:-1]
            if '·' in jiaming:
                # 假名直接去掉点
                if jiaming.replace('·', '') not in citou_list:
                    write1.write(jiaming.replace('·', '') + '\[email protected]@@LINK=' + citou + '\n</>\n')
            if '·' in hanzi:
                # 汉字就要分开词头
                hanzi = hanzi.split('·')
                for i in hanzi:
                    if i not in citou_list:
                        write1.write(i + '\[email protected]@@LINK=' + citou + '\n</>\n')
        else:
            if citou.replace('·', '') not in citou_list:
                write1.write(citou.replace('·', '') + '\[email protected]@@LINK=' + citou + '\n</>\n')

    count += 1
    view_bar(count, total)

write1.close()

提个小建议,日文部分的字体建议使用meicho,用中文的宋体有点别扭,毕竟这是日语类的词典

这个 CSS中搞就行了

用程式果然还是比我只用 regex 容易处理复杂条件。
另外平假里面的点是用以表示动词和形容词的语干和语尾。

感谢指出 遇到这种情况就需要我后面的日语大佬给我指出哪些要哪些不要,词头该怎么处理了:doge::doge:

我不怎么用正则干正事 还是写程序稳当

没有区分中日文的标签,用css改一样有问题

我记不清分没分了