영어 단어를 몰라도 영문을 쓸 수 있는 마법(사전 데이터)을 만들었다

11506 단어 영어파이썬
마법은 낚시입니다.
거기까지 쓰기는 좋지 않습니다.

개요



「일본어 단어→영어」의 사전으로부터 Microsoft IME의 사전을 작성해, 추가했을 뿐.

다음과 같은 느낌으로 할 수 있다.



사용법



edict_for_MSIME.txt - Google 드라이브에서 사전 데이터 (edict_for_MSIME.txt)를 다운로드하십시오.

작업 표시줄의 Microsoft IME를 마우스 오른쪽 버튼으로 클릭하여 사용자 사전 도구를 엽니다.


사용자 사전 도구의 도구 탭에서 텍스트 파일에서 등록을 클릭합니다. edict_for_MSIME.txt를 선택합니다.


등록하는 데 시간이 걸립니다. 289971 단어를 등록할 수 있습니다.

등록 중에 다른 소프트웨어가 불안정 해지기 때문에 쓰기 중이나 떨어지지 않아야하는 소프트웨어를 움직이는 사람은주의!

사전 데이터를 만드는 방법



EDICT라는 공개된 일본어 사전을 Microsoft IME 형식으로 변경합니다.
EDICT는 Creative Commons Attribution-ShareAlike License (V3.0)의 원래 사용 가능합니다.

The EDICT 사전 파일

이상의 사이트로부터, edict.zip을 떨어뜨려 edict 파일(내부는 텍스트 파일)을 사용합니다.
다음은 edict를 Microsoft IME 형식으로 변환하는 스크립트입니다.
import codecs
import unicodedata
import jaconv
import re
from tqdm import tqdm

dic_path = "./edict"
output_path = "./edict_for_MSIME.txt"

def kana_from_edict_line(line):
    yomi_text = re.search(r'\[(.*)\]', line)
    if yomi_text:
        return jaconv.kata2hira(yomi_text.group(1))
    return False

def eng_words_from_edict_line(line):
    words_text = re.search(r'\/(.*)\/', line)
    if words_text:
        words_list = words_text.group(0)[1:-1].split("/")
        words = []
        for word in words_list:
            if word == "(P)": continue
            m = re.search(r"(\s?\(.+\)\s?)*(?P<word>[^\(\)]+)(\s?\(.+\)\s?)*", word)
            s = m.group('word').strip()
            if len(s) == 0: continue
            if len(s.split(" ")) >= 6: continue
            words.append(s)
        return words
    return False

dictionary = {}
with codecs.open(dic_path, 'r', 'euc_jp') as dic_file:
    print("loading...")
    for line in tqdm(dic_file):
        kana = kana_from_edict_line(line)
        if not kana: continue

        words = eng_words_from_edict_line(line)
        if len(words) == 0: continue
        if not kana in dictionary:
            dictionary[kana] = set()
        dictionary[kana].update(words)

word_count = 0
with codecs.open(output_path, 'w') as out_file:
    print("creating...")
    for (yomi, eng_list) in tqdm(dictionary.items()):
        for eng in eng_list:
            try:
                out_file.write("%s\t%s\t%s\n" % (yomi, eng, "顔文字"))
                word_count += 1
            except: pass

print("%s (containing %d words) has been created!" % (output_path, word_count))

정규식을 오랜만에 썼다.

Online regex tester and debugger: PHP, PCRE, Python, Golang and JavaScript
↑ 이것을 사용하면 간단하게 정규 표현의 체크를 할 수 있어 편리했다.

기타



MS IME에 넣는 사전 데이터에 사용자 코멘트로서 단어의 의미라든지 표시하면 사용하기 쉬워진다고 생각한다.
솔직하게 문장의 번역은 Google 번역을 사용하는 편이 편하지만, 단어의 입력은 편리할지도 모른다. (?)

참고 요약


  • 정규 표현식을 확인할 때 신세를 졌습니다 → Online regex tester and debugger: PHP, PCRE, Python, Golang and JavaScript
  • 파일 읽기/쓰기 file open read write | Python Snippets
  • The EDICT 사전 파일
  • 히라가나, 카타카나 변환에 신세를 졌다 → jaconv · PyPI
  • Python3에서 일본어 변환 모듈 비교 - Qiita
  • 좋은 웹페이지 즐겨찾기