質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
86.12%
Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

解決済

おかーさん→おかあさんのような長音の処理をするプログラムを作りたい

O_Sho3
O_Sho3

総合スコア4

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

1回答

0リアクション

0クリップ

247閲覧

投稿2022/10/02 04:23

前提

機械学習をする前のデータの前処理を行なっています。
ひらがな化や[ ]の削除などの処理を行なっていますが、その中で(例)おかーさん→おかあさん、おとーさん→おとおさんなどの処理を追加した時にエラーが発生しました。

詳細
現在、日本語の方言から標準語への機械学習を行なっています。
その為にデータの前処理を行なっていますが、プログラミングが難しく戸惑っています。コーパスとしては国立国語研究所の「全国方言談話データベース ふるさと言葉集成」を用いています(csvファイル)。プログラムは標準語の列だけを抜き出して処理をしています。

実現したいこと

ここに実現したいことを箇条書きで書いてください。
●長音の処理が実行されるプログラムを作りたい
(例)おかーさん→おかあさん、おとーさん→おとおさん

該当のソースコード

python

#coding: UTF-8 import re import pandas as pd from pathlib import Path import jaconv from pykakasi import kakasi hougen_train = [] hougen_val = [] hyouzyun_train = [] hyouzyun_val = [] count = 0 table = str.maketrans({ '゜': '゛', }) #パスの指定 p = Path('datasets/hougen_data') #*csvと言う名前のファイルを1つずつ読みとる file_name = '01_b_099_utf8.csv' csv_files = p.glob(file_name) #csvファイルを1つずつ処理 for file in csv_files: df = pd.read_csv(file) #9:1にデータを分割 count_hyozyun = 1 count_hougen = 1 rows = len(df.axes[0]) count += rows sample_num = rows*0.9 data_hyozyun = df["標準語テキスト"] #標準語テキストの処理 for i in data_hyozyun: #ここが質問の分からないところです(該当箇所) for j in i: if j == "ー": if prev in "かがさざただなはばぱまやら": j = "あ" if prev in "きぎしじちぢにひびみり": j = "い" if prev in "くぐすずつづぬふぶむるゆゅ": j = "う" if prev in "けげせぜてでねへべぺめれ": j = "え" if prev in "こごそぞとどのほぼぽもよろょ": j = "お" print(j, end="") prev = j data = prev print(data) #ひらがな化、[]、〔〕の削除 data = re.sub("[[あ-ゟ]]", "", str(i)) # data = re.sub("{笑}", "", data) data = re.sub("〔.+?〕", "", data) #漢字〜ひらがなに変換 # オブジェクトをインスタンス化 kakasi_1 = kakasi() # モードの設定:J(漢字) ~ H(ひらがな) kakasi_1.setMode('J', 'H') conv = kakasi_1.getConverter() # 変換して出力 if count_hyozyun < sample_num: hyouzyun_train.append( conv.do(data)) else: hyouzyun_val.append( conv.do(data)) count_hyozyun += 1 #標準語(train)の作成 with open("datasets/fix_data/hyouzyun_train_2.txt", "w") as hyouzyun: for content in hyouzyun_train: hyouzyun.write(content + "\n") #標準語(test)の作成 with open("datasets/fix_data/hyouzyun_val_2.txt", "w") as hyouzyun: for content in hyouzyun_val: hyouzyun.write(content + "\n")

試したこと

一応、その他のひらがな化や[ ]の削除などの処理はしっかりと出来ていますが、該当箇所を追加したところ上手く処理が出来ません。

補足情報(FW/ツールのバージョンなど)

●python3.8.2

以下のような質問にはリアクションをつけましょう

  • 質問内容が明確
  • 自分も答えを知りたい
  • 質問者以外のユーザにも役立つ

リアクションが多い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

気になる質問をクリップする

クリップした質問は、後からいつでもマイページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

下記のような質問は推奨されていません。

  • 間違っている
  • 質問になっていない投稿
  • スパムや攻撃的な表現を用いた投稿

適切な質問に修正を依頼しましょう。

meg_

2022/10/02 04:34

> 該当箇所を追加したところ上手く処理が出来ません。 「上手く処理が出来ません」とは具体的にはどうなるべきものがどうなっているのでしょうか?
O_Sho3

2022/10/02 05:20

ご質問ありがとうございます。 エラーは出ずにただ単に「ー」の処理以外の処理はしっかりと出来ていて何も変化が無いと言う事です。
melian

2022/10/02 05:50

例えば入力が「おかーさん」の場合、 data = prev の処理で data の内容は最終的に「ん」になっているかと思うのですが、それは問題ないでしょうか?
TakaiY

2022/10/02 06:28

質問者さん、回答はここに書くのではなく、質問を編集してください。
meg_

2022/10/02 06:41

一部で良いので「01_b_099_utf8.csv」のデータを示していただけませんか?

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
86.12%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問

同じタグがついた質問を見る

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。