※2019年3月時点の情報です
Pythonで
English→イングリッシュ
のように英単語をカタカナ語に変換する方法のまとめです。
他に見つけたら追記していきます。
もっと良い方法がありましたら教えて下さい。
1. 辞書をダウンロードして使う
調べた限りだと、この2つが英単語に対応したカタカナ語が載っている辞書で利用できそうなものでした。
どちらも4万5千語以上載っていて、簡単にファイルオープンして利用できます。
# bep-eng.dicから辞書作成
dic_file = 'bep-eng.dic'
dict = {}
with open(dic_file, mode='r', encoding='utf-8') as f:
lines = f.readlines()
for i, line in enumerate(lines):
if i >= 6:
line_list = line.replace('\n', '').split(' ')
dict[line_list[0]] = line_list[1]
ipadicやmecab-ipadic-NEologdといった形態素解析向け辞書の英単語の読みとして、カタカナ語が入っている場合もあります(大半は英単語そのものが入っています)。
2. Webスクレイピングで取得
1.の方で満足できない場合はこの辺りから取得してくるという手もあります。
# 英語→カタカナ変換機(https://www.sljfaq.org/cgi/e2k_ja.cgi)からスクレイピング
import urllib
from bs4 import BeautifulSoup
def english_to_katakana(word):
url = 'https://www.sljfaq.org/cgi/e2k_ja.cgi'
url_q = url + '?word=' + word
headers = {'User-Agent': 'Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:47.0) Gecko/20100101 Firefox/47.0'}
request = urllib.request.Request(url_q, headers=headers)
html = urllib.request.urlopen(request)
soup = BeautifulSoup(html, 'html.parser')
katakana_string = soup.find_all(class_='katakana-string')[0].string.replace('\n', '')
return katakana_string
word = 'English'
katakana_string = english_to_katakana(word)
print(katakana_string)
英語→カタカナ変換機がどのようなロジックで変換しているのか気になります。
一例はこちらのような感じのようです。
その他
英語をカタカナ語に変換してくれるようなライブラリ等はないです。
その他としては
- カーネギーメロン大学配布の発音(ARPABET)辞書CMU Pronouncing DictionaryのARPABETをIPAに変換、IPAからカタカナ語予測
- 上に挙げたような辞書データ等をもとに機械学習
といった方法も考えられます。