Pythonは、人工知能・機械学習系ライブラリが結構そろっていることでも人気のプログラム言語です。
ここでは便利な関数をまとめていきます。
文章の解析
文章を解析していこうとすると、単語や動詞、形容詞などに分解させたい場合があります。
そんなときに便利なのがMecabです。
ここでは「mecab-python-windows」を使うので先にインストールしておきましょう。
Visual StudioでPythonのライブラリをインストールする方法については以下参照ください。
【Visual Studio 2019】Pythonの始め方 インストールは?PIPは? - 困ったー
形態解析
PYファイルでは、以下のようにMecabオブジェクトを作り、解析したい文字を渡します。
import MeCab
t = MeCab.Tagger('mecabrc')
print(t.parse("俺現実から締め出され、何が起きているかわからない"))
実行すると以下のように名詞や助詞、動詞などに分解してくれます。
名詞だけ抜き出すには、以下のようにします。
import MeCab t = MeCab.Tagger('mecabrc')
t.parse('')
m = t.parseToNode("俺現実から締め出され、何が起きているかわからない")
while m:
if m.feature.split(',')[0] == '名詞':
print(m.surface)
m = m.next
実行するとこんな感じで、「俺」「現実」「何」といったことばが出力されました。
画像の解析
画像認識で便利なのがOpenCVというライブラリです。
ここでは「opencv-python」というライブラリを利用するので、先にインストールしておきましょう。
顔認識
ここでは人物画像「temp.png」をロード。顔認識したら顔の位置に四角形を描画して「temp2.jpg」として書き出します。
「detectMultiScale」のところまでが顔認識で、以降は四角形の描画と出力となります。
import cv2 img = cv2.imread("temp.png")
cascade = cv2.CascadeClassifier("haarcascade_frontalface_default.xml")
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
face = cascade.detectMultiScale(gray, minSize=(150, 150)) for (x, y, w, h) in face:
cv2.rectangle(img, (x, y), (x + w, y+h), (0,0,200), thickness =3) cv2.imwrite("temp2.jpg",img)
しかしこれを実行するとdetectMultiScaleのところで「Assertion failed」エラーとなりました。
ぐぐってみると顔定義のXMLファイルのエラーのようで、以下のファイルを作っているプログラムのフォルダ(PythonApplication1など)へ直接入れたら治ったようです。
実際「C:\Program Files (x86)\Microsoft Visual Studio\Shared\Python37_64\Lib\site-packages\cv2\data」にあった「haarcascade_frontalface_default.xml」ファイルを、「C:\Users\{ユーザ名}\source\repos\PythonApplication1\PythonApplication1」へコピーしたらエラーが回避されました。
今回試した画像はこちら(画像:http://www.ashinari.com/)
顔の位置を認識してマーキングするとこんな感じになりました。