34
22

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Pythonで英単語(English)をカタカナ語(イングリッシュ)に変換する方法

Posted at

※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)

英語→カタカナ変換機がどのようなロジックで変換しているのか気になります。
一例はこちらのような感じのようです。

その他

英語をカタカナ語に変換してくれるようなライブラリ等はないです。
その他としては

といった方法も考えられます。

34
22
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
34
22

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?