LoginSignup
1
0
記事投稿キャンペーン 「2024年!初アウトプットをしよう」

【Python】アラビア語の単語・文字分割【アラビア語学習用】

Posted at

目的

初心者が効率的にアラビア語を学べるようにする

1.好きなアラビア語の文章を持ってくる
2.文章を翻訳する
3.文章を単語に分割(トークナイズ)する
4.さらに好きな単語を選んでアラビア文字に分解する

解決できる課題

・アラビア語学習の効率化
・単語内における位置によって変形するアラビア文字を識別する

ライブラリ準備

Google Colaboratory上での利用を想定

NLTK

Pythonで自然言語処理を行うためのライブラリNLTK

!pip install nltk # 初回のみ

import nltk
from nltk.tokenize import word_tokenize

GoogleTrans

Google翻訳

!pip install googletrans==4.0.0rc1 # 最新(これは毎回必要みたい)

from googletrans import Translator
translator = Translator()

アラビア語の文章を準備

# アラビア語の文
arabic_text = "\
   يثبك و يجازيك كل الخير يا \
"

アラビア語は右から左なので、ローマ字と一緒に書くとカーソルが前後して書きにくい。
なので、1行に書きたいけど改行して、\でつなげる。

文章を翻訳

# 文章を翻訳
translations1 = translator.translate(arabic_text, dest='ja')
translations1.text

→出力結果

それはあなたを創造し、最高の状態であなたに報いる

※翻訳結果は、WEBアプリのGoogle翻訳に比べて少し精度低めみたい

単語に分割

アラビア語の単語をトークナイズ(単語分割)

# 単語分割
nltk.download('punkt')
arabic_words = word_tokenize(arabic_text)

# トークナイズされた単語の表示
print(arabic_words)

→出力結果

['يثبك', 'و', 'يجازيك', 'كل', 'الخير', 'يا']

単語ごとに翻訳

# 単語ごとに翻訳

print("アラビア単語を右から順に表示")

for index, word in enumerate(arabic_words):
  translations2 = translator.translate(word, dest='ja')

  # index、元の言語 → 指定の言語
  print(f"Index: {index}, {translations2.origin} -> {translations2.text}")

→出力結果

アラビア単語を右から順に表示
Index: 0, يثبك -> あなたはあなたを作ります
Index: 1, و -> そして
Index: 2, يجازيك -> それはあなたに報いる
Index: 3, كل -> 全て
Index: 4, الخير -> いいもの
Index: 5, يا -> または

単語をアラビア文字に分割

出力結果の中から好きな単語のindexを選んで、アラビア文字に分割する。

# indexで単語を指定
i = 2
pickup_word = arabic_words[i]

# 単語の意味確認のために再度、翻訳と表示
translations3 = translator.translate(pickup_word, dest='ja')
print(f"Index: {index}, {translations3.origin} -> {translations3.text}")
print("")

# アラビア文字1文字ずつに分割
characters = [char for char in pickup_word]

# アラビア文字の分割結果を表示
print("アラビア語文字列(右から)")
for c in characters:
  print(c)

→出力結果

Index: 5, كل -> 全て

アラビア語文字列(右から)
ك
ل

分割したアラビア文字は独立形(基本形)に戻るので、アラビア語初心者でも調べやすくなる。

アラビア語参考

メモ

あとで文字ごとの発音も入れられるようにする。

1
0
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
1
0