関数、VBAとも6年ほど前から扱っていますが、多忙で技術が向上しません。今回、英語と日本語のかみ合わせのデータを単語ごとに分解する作業が発生しました。
[例]
東日本旅客鉄道株式会社・・・East Japan Railway Company
英語は空欄がありますので、何とかなりそうですが、漢字(送り仮名などのひらがなも含まれます)は続いていますので、分解できるのでしょうか。
希望の結果は、
[日本語]
東日本
旅客
鉄道
株式会社
[英語]
East
Japan
Railway
Company
です。英語は自分で作ってここで見てもらおうと思いましたが、ちょっと稚拙ですので思いとどまりました。
関数またはマクロを使って、多くのデータを分解したいのです。
とくに漢字については、関数・マクロでは不可能でしょうか。人工知能のようなプログラムがないと無理でしょうか。
それから、英語の分類についても見本を示して頂ければ有難いです。
データはA列に漢字B列に英語が1行から1000行まであります。
よろしくお願いします。
No.5ベストアンサー
- 回答日時:
これは仮名漢字変換方式の難しさから考えても、サンデープログラマ程度のスキルでは、ろくなものができないと思います。
出来合いのソフトがないか探すことでしょう。
例えば、ジャストシステムのようなところの技術者・経験者でないと、無理でしょう。辞書があること、自由に操れることも必要でしょう。
エクセル関数ごときでは、もちろん歯が立ちません。
私もできたらいいなと夢想したことがあります。
ーーーー
私のアイデアは、文字コード(帯)から、漢字、ひらがな、カタカナかの区別方のプログラムを勉強する。
漢字続き+カタカナ続き(連続2文字以上)の文字列を、セルにリストアップする。
質問の文章の一部では、英語 自分 稚拙 関数 マクロ 分解 漢字 関数 マクロ 分解 に分離する。
ダブりの、分解、マクロは除く、仕掛けにする。
(「有難い」が有難になるなどの欠点もありますが)
これを人間が一読して、自分 稚拙 などビジネス見地から捨てるものにサインを立てる。
捨てるものはプログラムで後刻に、一斉削除。
表現の規則性に乗っかった、あいまいな面のある方法ですが、事実上
使えるものになるような気がする。
ーー
もうひとつ、既回答にも出てますが、ワードに文章を貼り付け、WordVBAで
Sub tst16()
For Each para In ActiveDocument.Paragraphs
For i = 1 To para.Range.Words.Count
MsgBox para.Range.Words(i).Text
Next i
Next para
End Sub
の結果を何か処理できないか考えるのも途かも知れません。
細かく(助詞まで)分解して表示しますが、人間が見て、NOを応答して捨てる仕組みでやれば、一読する時間+アルファの時間で要素語が抜き出せる気がします。
No.4
- 回答日時:
cherry_islandさん、はじめまして。
VBA で任意の文字列を分割されたいようですが、
どんな環境を想定されていますか?
実行環境をExcel 2000/XP/2003として回答します。
違っていたらゴメンなさい。
(案)
区切り文字(カンマなど)で区切られていない日本語
の文字列を区切るには、自前の辞書などを用意して
処理しないと、ExcelのVBAだけでは難しいと思いま
す。
そこで、Wordの単語を切り出す機能を利用する案で
サンプルを紹介したいと思います。
こちらも完全にはご期待にそえる結果にはならない
と思いますが、自前の辞書を駆使するよりはかなり
楽になると思います。
1. ExcelのVBAに参照設定を追加する
VBAの[ツール]メニューから「参照設定...」を選択し、
参照設定画面のリストから以下の項目にチェックして
[OK]ボタンをクリックします。
Microsoft Word 11.0 Object Library
※"11.0" の部分はインストールしているWordの
バージョンによって表示が異なります。
"11.0" は、Word2003です。
Sub Sample()
Dim docObj As Word.Document
Dim myObj As Variant
Dim jpStr As String
Dim enStr As String
jpStr = "東日本旅客鉄道株式会社"
enStr = "East Japan Railway Company"
Set docObj = New Word.Document
'Wordのオブジェクトに文字列を設定する(日本語)
docObj.Paragraphs(1).Range.Text = jpStr
'Wordのオブジェクトから単語を切り出す
For Each myObj In docObj.Paragraphs(1).Range.Words
If myObj.Text <> jpStr Then
Debug.Print myObj.Text
End If
Next
'Wordのオブジェクトに文字列を設定する(英語)
docObj.Paragraphs(1).Range.Text = enStr
'Wordのオブジェクトから単語を切り出す
For Each myObj In docObj.Paragraphs(1).Range.Words
If myObj.Text <> enStr Then
Debug.Print myObj.Text
End If
Next
End Sub
出力結果は以下の通りになります。
---------------------------------------------
東日本
旅客
鉄道
株式
会社
East
Japan
Railway
Company
No.3
- 回答日時:
漢字部分の分割ルールを、そちらの業界に通じていない人(例えば私)に、口で説明出来ますか?
それならば、なにかしらプログラミング化のヒントを差し上げられる可能性があるかも知れませんので、
補足してみてください。
それが出来ない(ルールに例外が多過ぎ、論理的でない)のであれば、手でやった方が早いです。
特殊な例外処理用のデータベースが必要となるでしょうから、おそらく、そのデータベースを
構築する時間で、元の作業を手で出来てしまうことでしょう。
それよりも発想を変えて、分解の区切りは人が入れるけれど、その他の部分を自動化した、
「作業補佐ツール」を開発したほうがいいかも知れませんね。
(一例)
「漢字部分が表示される」
「人がマウスなどで、チェックを入れる」
「OKボタンをクリックすると、文字列をチェックの入った所から分解して、各セルにコピーする」
「次の漢字文字列が表示される」
(以下、くりかえし)
No.2
- 回答日時:
スーツのデザイナーでプログラマではありません。
よって、あくまでも、参考意見として...
英語と日本語の対応をデータベース化するしかないと思います。
East Japan=東日本
ただし、
East=東
も登録される可能性を前提に検索ルーチンを組むべきかも知れません。
1、英語部分は split関数 を使えば、簡単に配列に代入できます。
(1) ピリオド、ビックリマーク等をブランクに置換する。
(2) ブランクで分割して配列に取り込む。
2、日本語部分は、英語の配列を手掛かりにして分割する。
この方式の難点は、予め既知の字句しか分割できないことです。
が、
東、日本、旅客、鉄道、株式、会社
東日本、旅客鉄道、株式会社
東日本旅客鉄道、株式会社
のどれが正しいか異論のある所でしょう。
よって、任意分割と看做さざるをえません。
<データベース辞書>を推奨する理由です。
No.1
- 回答日時:
英単語の方は、VBAを使わなくとも、スペースで区切られているので、分割したいデータの範囲を選択し、メニューのデータ~区切り位置で、カンマやスペースなど…で、スペースにチェックを付けて完了です。
でも漢字の方は無理なのでは?
ととえば大日本多村産業株式会社は、
大日本、多村、産業?
大日、本多村、産業? 誰も区別できないですよね?
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- 英語 YouTubeに、 2 2022/05/16 03:06
- Excel(エクセル) EXCELでの文字・数字入力の基本について教えてください。 2 2023/05/29 23:17
- 留学・ワーキングホリデー リスニング力、はつきますか?6カ月語学学校行き数年間お金を稼いでまた、6カ月間語学留学に行くのは? 1 2023/02/11 15:49
- 英語 突然ですが、日本人が英語を話せない大きな理由は英単語量が少ないことだと思っています。中学校から始める 6 2022/05/05 22:35
- その他(教育・科学・学問) 英語教育と日本語教育 1 2022/09/10 23:14
- C言語・C++・C# C言語初心者 構造体 課題について 2 2023/03/10 19:48
- その他(社会・学校・職場) 平均的日本人の頭は悪くはないはずですし、学校で習う内容が幼稚というわけでもないのに、世間には幼稚な大 7 2023/04/05 20:51
- 日本語 日本語はどのくらい難しいですか? 日本育ちの日本人です。 漢字検定の勉強をしてるのですが、同じ言葉で 3 2022/07/12 13:09
- 大学受験 3浪しようと思うので、アドバイスお願いします。 自分としては結構メンタルきつくて後期でいいから、東京 3 2023/02/13 21:47
- 大学受験 国立受験 11月からの大逆転劇を起こすには 7 2022/11/14 19:24
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
May I ask you where you call ...
-
I'm going to go to… と言わな...
-
『50歳の誕生日おめでとう』を...
-
call homeとは何でしょうか?
-
職業名
-
英語で「30歳の誕生日おめでと...
-
Creampieは何故クリームパイで...
-
数学に関して
-
「ポジション」と「ポディショ...
-
「多くの方々」と「多くの方」...
-
agree withとagree that
-
must notに、「~のはずがない...
-
ご縁を外国語で言うと?
-
コンマの後のアルファベットは...
-
イタリア語
-
ゴールデンウィークの略は?GW...
-
MSNのホームからhotmailのペー...
-
ofで結ぶ複数形と単数形
-
予想外の出来事の事を英語っぽ...
-
ある会合の、「第1回」、「第2...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ゴールデンウィークの略は?GW...
-
「多くの方々」と「多くの方」...
-
高3春のスタサポ αなのに、英語...
-
Creampieは何故クリームパイで...
-
メールの「様、」←様の後の句読...
-
『50歳の誕生日おめでとう』を...
-
単位の何本とかってなんて訳せ...
-
外国人が箇条書きする際、先頭...
-
ご縁を外国語で言うと?
-
章立ては、部、章、節、項、だ...
-
数学に関して
-
英語で「30歳の誕生日おめでと...
-
revert
-
ある会合の、「第1回」、「第2...
-
must notに、「~のはずがない...
-
good dayに対してなんと返すの...
-
半角のφ
-
「ポジション」と「ポディショ...
-
赤ちゃんの百日祝い 英語で何...
-
『あなたがいつも幸せの中にい...
おすすめ情報