查看: 691|回复: 4
打印 上一主题 下一主题

[拉丁语] 拉丁图书馆【扒站+加长音】

[复制链接]
  • TA的每日心情
    开心
    2021-12-2 19:04
  • 签到天数: 349 天

    [LV.8]以坛为家I

    86

    主题

    503

    回帖

    4131

    积分

    翰林院孔目

    【Mdict和Goldendict德语词典】QQ群群主,群号

    Rank: 10Rank: 10Rank: 10

    积分
    4131

    灌水大神章小蜜蜂章笑傲江湖章翰林院专用章管理组专用章QQ 章

    QQ
    跳转到指定楼层
    1
    发表于 2020-3-6 08:47:24 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
    本帖最后由 许一诺 于 2020-3-6 11:07 编辑

    拉丁语图书馆 www.thelatinlibrary.com 全站网页加长音
    武汉大学德语系 许一诺 制作

    拉丁图书馆加长音
    链接: https://pan.baidu.com/s/1JtbB9vEfxr2wzO1Zq02MrQ 提取码: 8whi



    使用说明:

    0. 本资料基于:
    http://www.alatius.com/macronizer/
    以及
    https://github.com/Alatius/latin-macronizer
    本人实现了本地拉丁语网页批量加长音的技术。

    1. 本文件夹是先对www.thelatinlibrary.com进行扒站,然后加了长音。最方便的方式是直接打开文件夹,根据文件名来浏览,带有macronized的就是加过长音的网页。

    2. 下面介绍一个繁琐一些的方法:
    打开www.thelatinlibrary.com文件夹里的index.htm,这是拉丁图书馆的主页,可以随意点击跳转到无长音的页面。
    在任意一个内容为拉丁语的无长音页面,比如:
    file:///D:/www.thelatinlibrary.com/caesar/gall1.shtml.htm
    (此处是本地存储的网页,www.thelatinlibrary.com是文件夹的名字,不是线上的网站的名字,此处是假设解压后的文件在D盘下)
    在最后一个扩展名前加上“_macronized”
    就能看到加过长音的网页。
    比如改为:
    file:///D:/www.thelatinlibrary.com/caesar/gall1.shtml_macronized.htm

    3. 本文件夹在windows的chrome浏览器和ubuntu的firefox浏览器下测试均无乱码。

    4. 加长音所用的软件链接:
    拉丁图书馆加长音
    链接: https://pan.baidu.com/s/1JtbB9vEfxr2wzO1Zq02MrQ 提取码: 8whi
    若链接失效,可发信到[email protected]索取

    5. 源码比较乱,请见谅:

    1. #!usr/bin/python3
    2. def method(text):
    3.         macron = Macronizer()
    4.         macron.macronize(text)
    5.         macroned = macron.tokenization.detokenize(True)
    6.         del macron
    7.         return macroned

    8. def macron_paragraph(html):
    9.         html = re.sub ('{}','☺',html)
    10.         string_list = re.findall("[^\<\>]+|[\<]|[\>]", html, re.UNICODE)
    11.         to_macron = []
    12.         for i in range(len(string_list)):
    13.                 if i>0 and i<len(string_list)-1 and string_list[i-1] is '>' and string_list[i+1] is '<':
    14.                         to_macron.append (string_list[i])
    15.                         string_list[i] = '{}'
    16.         string_list = ''.join(string_list)
    17.         smile_string = '☺'.join(to_macron)
    18.         if langid.classify(smile_string)[0]=='en':
    19.                 print ('The file is not latin.')
    20.                 raise Exception
    21.         to_macron = (method(smile_string)).split('☺')
    22.         html = re.sub ('☺','{}',string_list.format(*to_macron))
    23.         return html

    24. def output_file_path (file_path):
    25.         filepath,tempfilename = os.path.split(file_path)
    26.         filename, extension = os.path.splitext(tempfilename)
    27.         return os.path.join(filepath,filename+'_macronized'+extension)

    28. def macron_file(i, file_path):
    29.         print (f'We are doing {i}th file: {file_path}')
    30.         try:
    31.                 original = open(file_path, mode='rb').read()
    32.                 encoding = chardet.detect (original)['encoding']
    33.                 original = str (original, encoding=encoding)
    34.                 webpage = macron_paragraph (original)
    35.                 ofp = output_file_path (file_path)
    36.                 with open(ofp, mode='w', encoding='utf-8') as macronized_html:
    37.                         macronized_html.write (webpage)
    38.                         print (f'We have done {i}th file: {ofp}')
    39.         except:
    40.                 print (f'{i}th file failed: {ofp}')

    41. def get_file_paths():
    42.         file_paths = []
    43.         with open('/home/xyn/latin-macronizer/latin_test/index.txt', encoding='utf-8') as index:
    44. # index.txt是存放需要加长音的拉丁语网页地址的文本文件
    45.                 for line in index:
    46.                         file_paths.append(line.rstrip('\r\n'))
    47.         print (f'{len(file_paths)} files in total.')
    48.         return file_paths

    49. def main(file_paths):
    50.         pool = multiprocessing.Pool(processes = 8)
    51.         for i,fp in enumerate (file_paths):
    52.                 pool.apply_async(macron_file, (i,fp, ))
    53.         pool.close()
    54.         pool.join()
    55.         print ('All Done!')

    56. main(get_file_paths())

    复制代码





    评分

    2

    查看全部评分

  • TA的每日心情
    开心
    2021-12-2 19:04
  • 签到天数: 349 天

    [LV.8]以坛为家I

    86

    主题

    503

    回帖

    4131

    积分

    翰林院孔目

    【Mdict和Goldendict德语词典】QQ群群主,群号

    Rank: 10Rank: 10Rank: 10

    积分
    4131

    灌水大神章小蜜蜂章笑傲江湖章翰林院专用章管理组专用章QQ 章

    QQ
    来自 3楼
     楼主| 发表于 2020-3-6 21:50:34 | 只看该作者
    利用加过长音的文件,可以得到拉丁语长音形式词频表。

    利用antconc得出的词频表.7z

    1.74 MB, 下载次数: 3, 下载积分: 米 -5 粒

    利用antconc得出的词频表

    评分

    1

    查看全部评分

  • TA的每日心情
    擦汗
    2021-4-8 12:38
  • 签到天数: 430 天

    [LV.9]以坛为家II

    3

    主题

    731

    回帖

    9721

    积分

    进士

    Rank: 8Rank: 8

    积分
    9721
    2
    发表于 2020-3-6 10:14:35 | 只看该作者
    本帖最后由 Process 于 2020-3-6 12:21 编辑

    多谢楼主辛勤工作!
  • TA的每日心情

    2023-1-14 05:21
  • 签到天数: 1 天

    [LV.1]初来乍到

    0

    主题

    6

    回帖

    65

    积分

    白身

    Rank: 1

    积分
    65
    4
    发表于 2020-3-7 04:52:09 | 只看该作者
    谢谢楼主, 拉丁语的资源在国内还不多(*´ω`*)
  • TA的每日心情
    开心
    2021-12-2 19:04
  • 签到天数: 349 天

    [LV.8]以坛为家I

    86

    主题

    503

    回帖

    4131

    积分

    翰林院孔目

    【Mdict和Goldendict德语词典】QQ群群主,群号

    Rank: 10Rank: 10Rank: 10

    积分
    4131

    灌水大神章小蜜蜂章笑傲江湖章翰林院专用章管理组专用章QQ 章

    QQ
    5
     楼主| 发表于 2020-3-25 16:14:29 | 只看该作者
    本帖最后由 许一诺 于 2020-3-25 18:30 编辑

    今天又在以下网站找到一种自动生成拉丁语词频表的方式。在此把词频表上传一下。
    http://perseus.uchicago.edu/Latin.html

    拉丁语词频表来自perseus.uchicago.edu.7z

    538.34 KB, 下载次数: 0, 下载积分: 米 -5 粒

    这个有点小问题

    拉丁语词频表【四种格式】.7z

    1.35 MB, 下载次数: 9, 下载积分: 米 -5 粒

    这个更好