[[20201108202429]] 『vbaで固有名詞判定できますか?』(はしもん) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『vbaで固有名詞判定できますか?』(はしもん)

vbaである文字列に固有名詞が含まれているか判定する関数を作りたいと考えています。方法ご存知の方教えて下さい。

< 使用 Excel:Excel2013、使用 OS:Windows10 >


http://officetanaka.net/excel/vba/function/InStr.htm

(マナ) 2020/11/08(日) 20:41


↑無視してください。

(マナ) 2020/11/08(日) 20:43


VBAだけで固有名詞判定はできません。
 
形態素解析が可能なツールをVBAから使うことになります。
Mecabといったツールが有名だと思います。
ネットで検索してみてください。

(γ) 2020/11/08(日) 21:05


「VBAからMeCabを使う」で検索するとヒットします。

VBAやVBScriptで形態素解析を行う方法 - Qiita
https://qiita.com/mima_ita/items/bc2aeb060ee12d280d7b

VBAで 形態素解析 に挑戦 | ITエンジニアの備忘録的技術ブログ ...
https://www.depthbomb.net/?p=265

などが参考になります。
(以前、回答用に調べたときの環境が残っていたので試してみました。)

前者のコードを使って、
"私の名前は山田太郎です"
という文字列を対象にして、実行すると
以下のように分離された情報が得られます。

私 名詞,代名詞,一般,*,*,*,私,ワタシ,ワタシ
の 助詞,連体化,*,*,*,*,の,ノ,ノ
名前 名詞,一般,*,*,*,*,名前,ナマエ,ナマエ
は 助詞,係助詞,*,*,*,*,は,ハ,ワ
山田 名詞,固有名詞,人名,姓,*,*,山田,ヤマダ,ヤマダ
太郎 名詞,固有名詞,人名,名,*,*,太郎,タロウ,タロー
です 助動詞,*,*,*,特殊・デス,基本形,です,デス,デス

あとは
.GetItem(i).Featureを カンマでSplitして、2番目の要素を見れば
その要素が固有名詞かどうかは判別できます。
適当に応用して、ユーザー定義関数に仕立ててください。
(γ) 2020/11/08(日) 21:57


返信遅くなりすいません、今確認しておこなったところ単語に分解し品詞の区別できました。
しかし、商品名(例:ポッキー)が名詞と一般と判定されます。
商品名を未知語や固有名詞とはんていするにはどうしたらよいでしょうか?

(はしもん) 2020/11/09(月) 20:44


完璧なものは無いと承知してください。
保有している辞書はカバレッジ、内容とも完全ではありえませんし、
言葉は日々刻々変化しています。
なんらかの修正は不可避だと思いますよ。

>商品名を未知語や固有名詞とはんていするにはどうしたらよいでしょうか?
辞書を鍛えていくことでしょうか?
ネット上にMecabに関する辞書の説明があると思います。
調査してみてください。
あとは、ご自分で頑張って下さい。
オープンソースのプロダクトとはそういうものです。

(γ) 2020/11/09(月) 20:57


詳しく教えていただきありがとうございました。
一般的な辞書に含まれない言葉を見つけ出したいと考えていました。
やっぱりVBAではそこまではできないですよね。
勉強になりました。
お付き合いいただき、ありがとうございました。
(はしもん) 2020/11/09(月) 21:32

今になって聞くのも変ですが、目的は何ですか?
固有名詞判定をどんな目的でされようとしているのですか?

固有表現抽出(NER)という分野があり、
欧米語であれば、"固有名詞コーパス"のようなデータセットがいくつもあります。

日本語でもそうした研究はあるようです。

「日本語 固有名詞コーパス」などで検索するとヒットするでしょう。

例えば、
日本語固有表現抽出における超大規模ウェブ ... - 喜連川研究室
http://www.tkl.iis.u-tokyo.ac.jp/new/uploads/publication_file/file/139/2008no14fukushima.pdf

いずれにしても、VBAの話じゃないことは確かです。
こんなところで?質問したって埒が明かない話ですよ。
コーディングが別に障害になっているわけじゃないですから。

(γ) 2020/11/09(月) 21:59


twitterの文章を取り出して、そこに含まれる固有名詞(一般的な辞書にない単語)を取り出して、新たにどんなことが流行っているか調べてみたくて質問させていた。
(はしもん) 2020/11/09(月) 22:54

質問させていただきました。
(はしもん) 2020/11/09(月) 22:55

 この質問は、VBAの質問掲示板で質問して、
 回答を受け取るという種類のものではありません。

 VBAというコーディング手法ではなく、
 それ以前の段階に重点があるからです。
 そしてそれは多くの研究者が取り組んでいるテーマでもあるからで、
 簡単に回答できるような種類のものではありません。

 まずは、以下の書籍などを学習されたらいかがですか。

 情報抽出・固有表現抽出のための基礎知識 (実践・自然言語処理シリーズ) 
 https://www.amazon.co.jp/%E6%83%85%E5%A0%B1%E6%8A%BD%E5%87%BA%E3%83%BB%E5%9B%BA%E6%9C%89%E8%A1%A8%E7%8F%BE%E6%8A%BD%E5%87%BA%E3%81%AE%E3%81%9F%E3%82%81%E3%81%AE%E5%9F%BA%E7%A4%8E%E7%9F%A5%E8%AD%98-%E5%AE%9F%E8%B7%B5%E3%83%BB%E8%87%AA%E7%84%B6%E8%A8%80%E8%AA%9E%E5%87%A6%E7%90%86%E3%82%B7%E3%83%AA%E3%83%BC%E3%82%BA-%E5%B2%A9%E5%80%89%E5%8F%8B%E5%93%89/dp/4764906104

 機械学習・深層学習による自然言語処理入門 ~scikit-learnとTensorFlowを使った実践プログラミング~
 https://www.amazon.co.jp/%E6%A9%9F%E6%A2%B0%E5%AD%A6%E7%BF%92%E3%83%BB%E6%B7%B1%E5%B1%A4%E5%AD%A6%E7%BF%92%E3%81%AB%E3%82%88%E3%82%8B%E8%87%AA%E7%84%B6%E8%A8%80%E8%AA%9E%E5%87%A6%E7%90%86%E5%85%A5%E9%96%80-scikit-learn%E3%81%A8TensorFlow%E3%82%92%E4%BD%BF%E3%81%A3%E3%81%9F%E5%AE%9F%E8%B7%B5%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%9F%E3%83%B3%E3%82%B0-Compass-Data-Science/dp/4839966605/ref=pd_lpo_14_t_0/355-1296415-9745254?_encoding=UTF8&pd_rd_i=4839966605&pd_rd_r=35d69155-cd8b-4d77-abe6-6132f0abc7b9&pd_rd_w=oGcxy&pd_rd_wg=LY4fY&pf_rd_p=4b55d259-ebf0-4306-905a-7762d1b93740&pf_rd_r=41FTMZEBB7YFREXJE9W5&psc=1&refRID=41FTMZEBB7YFREXJE9W5

 形態素解析の理論と実装 (実践・自然言語処理シリーズ)
 https://www.amazon.co.jp/%E5%BD%A2%E6%85%8B%E7%B4%A0%E8%A7%A3%E6%9E%90%E3%81%AE%E7%90%86%E8%AB%96%E3%81%A8%E5%AE%9F%E8%A3%85-%E5%AE%9F%E8%B7%B5%E3%83%BB%E8%87%AA%E7%84%B6%E8%A8%80%E8%AA%9E%E5%87%A6%E7%90%86%E3%82%B7%E3%83%AA%E3%83%BC%E3%82%BA-%E5%B7%A5%E8%97%A4-%E6%8B%93/dp/4764905779/ref=pd_lpo_14_t_1/355-1296415-9745254?_encoding=UTF8&pd_rd_i=4764905779&pd_rd_r=35d69155-cd8b-4d77-abe6-6132f0abc7b9&pd_rd_w=oGcxy&pd_rd_wg=LY4fY&pf_rd_p=4b55d259-ebf0-4306-905a-7762d1b93740&pf_rd_r=41FTMZEBB7YFREXJE9W5&psc=1&refRID=41FTMZEBB7YFREXJE9W5

 なお、こうした自然言語系のデータサイエンスにかかわるテーマでは、
 VBAが使われることは滅多にありません。
 C++,Pythonなどがもっぱら使われるのではないかと思います。

 >新たにどんなことが流行っているか調べてみたくて質問させていた。
 twitterでしたら、既に公開されているじゃありませんか。
(γ) 2020/11/10(火) 06:46

2019年4月にリクルートと国立国語研究所により
GiNZA という言語処理ライブラリーが開発されたようです。
そのなかの機能として、日本語での固有表現抽出が可能になっているようです。

どの程度のものか、満足しうるできなのかどうか不明ですが、参考にして下さい。
Pythonを使ったオープンソースなので、トライされたらいかがですか?

自然言語処理ライブラリGiNZAで固有表現抽出してみた - Qiita
https://qiita.com/yuto16/items/1fc1f2b79195a503c681

はじめての自然言語処理
第4回 spaCy/GiNZA を用いた自然言語処理
https://www.ogis-ri.co.jp/otc/hiroba/technical/similar-document-search/part4.html

(γ) 2020/11/10(火) 15:11


色々教えて下さり、ありがとうございます。
試してみたいと思います。

(はしもん) 2020/11/10(火) 21:29


 >twitterの文章を取り出して、そこに含まれる固有名詞(一般的な辞書にない単語)を取り出して、
 >新たにどんなことが流行っているか調べてみたくて質問させて質問させていただきました。

ならば、どっかから辞書を取得するか、
自分で辞書を作ればいいのでは?
単語で切り分けるなら、ワードVBAを利用すればよいかと思います。
あとは、自分次第でどうとでも分析アプリを作るだけですね。
(まっつわん) 2020/11/11(水) 19:42


コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.