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

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

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

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

Q&A

解決済

2回答

2444閲覧

python 日本語重複値の抽出

py-

総合スコア12

Python 3.x

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

0グッド

0クリップ

投稿2018/02/23 08:13

前提・実現したいこと

python データフレームを使用して、同じ言葉で記載された日本語にて2つのファイルを比較して重複して
いるひらがな・カタカナの内容を区別せず抽出したい。
(現在のpyコードは1が抽出できるが、2.3.4の条件内容も抽出をさせたい)

皆様お力をお貸し下さい

pandas : データーフレームで作成中 CR CR

1 東京 東京 ←重複値で抽出可能
2 とうきょう トウキョウ ←このひらがなとカタカナを重複と認識させる方法は
3 池の上 池ノ上 ←1文字ひらがなとカタカナになっているが重複と認識させる方法は
4 池ノ上 池ノ上 ←1文字カタカナの大文字・小文字になっているが重複と認識させる方法は

発生している問題・エラーメッセージ

上記2.3.4の抽出方法のpyコードを検証中ですが、うまくいかない。

エラーメッセージ

該当のソースコード

ファイル比較検証

#ライブラリー呼び出し
import pandas as pd
import numpy as np
import pathlib as path
import re

#CSVファイル読み込み
path_ip = path.WindowsPath(r"c:\Users\Desktop\1.csv")
t1 = pd.read_csv(path_ip, engine="python")
t1['CR'] = t1['CR'].astype(str)

#CSVファイル読み込み
path_ip = path.WindowsPath(r"c:\Users\Desktop\2.csv")
t2 = pd.read_csv(path_ip, engine="python")
t2['CRcode'] = t2['CRcode'].astype(str)

#deta
t1 = pd.DataFrame({'CR': t1['CR']},
columns = ['CR']).astype(str)

#deta
t2 = pd.DataFrame({'CRcode': t2['CRcode']},
columns = ['CRcode']).astype(str)
#deta hikaku
t1.drop_duplicates(subset=('CRcode'),inplace=True)
n = len(t1)
mask = pd.concat([t1,t2]).duplicated(subset=('CRcode'), keep=False)[:n]
t1[mask]

ソースコード``` ### 試したこと str.match関数を検討しましたががうまくいかず ここに問題に対して試したことを記載してください。 (正規表現しか抽出できないのかと思い検証中です) ### 補足情報(FW/ツールのバージョンなど) python3.6を使用 ここにより詳細な情報を記載してください。

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

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

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

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

ベストアンサー

基本的な方針はKojiDoiさんがおっしゃっているようにひらがなと半角カタカナを全角カタカナに変換してからマッチングを取ればいいように思います。

半角カタカナを全角カタカナにするのにmojimojiというパッケージを使うと楽そうなので、KojiDoiさんが紹介してくださっている記事とをあわせてPython3用に書いてみました。よければ試してみてください。

Python

1import re, mojimoji 2def make_function_katakana(): 3 re_hiragana = re.compile(r'[ぁ-ゔ]') 4 def katakana(text): 5 """カタカナ変換""" 6 test = mojimoji.han_to_zen(text, kana=True, digit=False, ascii=False) 7 return re_hiragana.sub(lambda x: chr(ord(x.group(0)) + 0x60), text) 8 return katakana 9katakana = make_function_katakana()

投稿2018/02/23 11:35

退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

py-

2018/02/26 00:06

dkato oo77さん 御教授ありがとうございます。 しかし、初歩てきなことでつまずいています。 pyコード読み込み時に、下記エラーが発生 NameError: name 'mojimoji' is not defined  その為、下記py構文を追加 % pip install mojimoji しかし、下記メッセージが発生。 今後の対応として、何をすればいいのかよくわからず。 お手数をおかけ致しますが、御教授願います。 python バージョンは3.6.3 anaconda navigatorを使用しています 実行後の内容は、下記になります。 The following command must be run outside of the IPython shell: $ pip install mojimoji The Python package manager (pip) can only be used from outside of IPython. Please reissue the `pip` command in a separate terminal or command prompt. See the Python documentation for more informations on how to install packages: https://docs.python.org/3/installing/
退会済みユーザー

退会済みユーザー

2018/02/26 00:10

説明不足で申し訳ない。pipはコマンドプロンプト(もしくはターミナル)で実行してください。
py-

2018/02/26 01:12

dkato0077さん 御教授ありがとうございます。 無事、進みました。 moji mojiが、初めてのpy コードで勉強になりました。 今後とも、宜しくお願い致します。
guest

0

比較対象に対して各々ひらがな→カタカナの変換を行い、変換後の文字列を使って異同を判定すればいいでしょう。
ひらがな→カタカナの変換については以下の記事が参考に出来そうです。
ひらがなをカタカナに、カタカナをひらがなに

投稿2018/02/23 09:36

KojiDoi

総合スコア13669

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2018/02/23 11:19

この記事、Python2.7なので3.x系じゃ動かないですね。
KojiDoi

2018/02/23 12:10

うかつでした。
py-

2018/02/26 00:08

kojiDoiさん 御教授ありがとうございます。 記載はしませんでしたが、この内容いがいで英数の案件と小文字半角にしていた経緯があります。 カタカナに関しては、全角で進めようと思っております。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問