エンジニアの副業は週1からでも可能?副業の例や探し方も解説
- ITエンジニア
- 副業
同性同士で話してるときと男女混合で話すときで雰囲気が180度変わる人っていませんか? 180度とまではいかなくても、異性がいるかいないかで態度や話の内容が変わる人は多いはず。
そこで、Pythonを使って「女子トーク」と「男子トーク」、そして「男女混合トーク」の会話内容を比べてみたいと思います。分析にはTF-IDFという、テキストの特徴を抽出する際に用いられる指標を使います。
テクノロジー分野のテーマが得意なライターとして活動中。現在、大学院で自然言語処理を使った研究を行なっています。将来の夢は彼氏を束縛するAIを開発すること。
今回協力してくれたのは、大学生・大学院生の男女3名ずつ。同性グループ内はそれぞれ友達同士ですが、異性のグループとはほぼ初対面です。
分析の流れは次の通りです。
トークテーマは「好きな異性のタイプ」です。異性がいるか否かでどんな風に会話内容が変化するのか楽しみですね。
ここで、今回指標として用いるTF-IDFについて解説します。TF-IDFの「TF」は「Term Frequncy(単語の出現頻度)」、「IDF」は「Inverse Document Frequncy(逆文章頻度)」で、これらを掛け合わせた値をTF-IDF値と呼びます。
参考までにTF-IDF値を算出するための式を載せましたが、TF-IDF値が大きい単語であればあるほど、その文章を特徴付ける重要な単語であるということさえ理解できればOKです。
今回はPythonのgensimというライブラリを使ってTF-IDF値を算出します。TF-IDFは自然言語処理の基本的な処理であることもあり、gensim以外にも利用できるライブラリはたくさんあります。他の方法でも試してみたい人はぜひ調べてみてください!
TF-IDF値を計算する前に、まずテキストデータを形態素解析する必要があります。形態素解析とは文章を単語ごとに区切って、各単語の品詞などを判別する処理のことです。これを行うために今回は形態素解析エンジンMeCabを使いました。
たとえば「私は塩顔のイケメンが大好きです。」という文をMeCabで形態素解析すると、以下のような出力が得られます。
今回は、この品詞情報をもとに名詞を抽出しました。ここまでの前処理さえうまくできれば、あとは以下のようにgensimを呼び出し、TF-IDF値を計算するだけ。
# -*- coding: utf-8 -*-
from gensim import corpora, models
documents = ['文書①の単語','文書②の単語'...]
#単語リストを作成
texts = list(map(lambda x:x.split(),documents))
#単語に番号を振る
dictionary = corpora.Dictionary(texts)
# コーパスを作成
corpus = list(map(dictionary.doc2bow,texts))
# tfidf モデルを生成
test_model = models.TfidfModel(corpus)
# コーパスをモデルに適用
corpus_tfidf = test_model[corpus]
#番号から単語を呼び出す
texts_tfidf = []
for doc in corpus_tfidf:
text_tfidf = []
for word in doc:
text_tfidf.append([dictionary[word[0]],word[1]])
texts_tfidf.append(text_tfidf)
#結果を表示
for text in texts_tfidf:
print(text)
ここまでを実行すると、TF-IDF値が与えられた各単語のリストが出力されます。
それでは、会話内容の分析結果を実際に見ていきましょう。
まずは女子だけで「好きな異性のタイプ」について話したときと男子と一緒に話したときの会話内容を比べてみます。
それぞれの会話データの中でTF-IDF値が大きかった単語がこちらです。
パッとみただけでも明らかに女子のみで話しているときのほうが赤裸々な感じがします。「メガネ」「ドS」「スーツ」など異性に対する理想を最大限に語っており、くわえて「2次元」などのワードから次元すらも超越して異性のタイプを述べていることがわかります。
また、好きな異性のタイプというテーマから派生して苦手な異性の話題に及んだのか、「ビンタ」「嫌い」「暴力」という単語も気になります。
一方で、男子がいる状態で語る好きな異性のタイプは「文系」「体育会系」「先輩」など誰でも当てはまるような当たり障りのない単語が上位にくる結果となりました。先ほどよりも一気に間口が広がった感じがします。
そして、気になる1位の「サイゼ」はイタリアンワイン&カフェレストラン「サイゼリヤ」のことだと思われますが、「私は全然サイゼリアでも嬉しいよ♡ てか、全然割り勘でも気にしないよ〜!」というぶりっこ気味な発言すらも飛び出したということなのでしょうか……恐ろしや。
続いて、男子の会話内容を比較していきます。
まず、男子のみで「好きな異性のタイプ」について話したときのデータをみてみると……「足」「胸」「性格」「におい」「顔」!!! ストレートな感じが実に男子っぽい。女子トークよりも具体的な身体部位が多いですね。
「胸」より「足」が圧倒的にTF-IDF値が高いのがまた面白いです。ちなみに、この会話データ内で「足」の出現回数は34回、「胸」の出現回数は12回でした。
そして、女子がいる状態の会話データの結果をみると……もはや「好きな異性のタイプ」ではない。どちらかというと「俺はそんなことしない」系の単語が多いように感じます。実際にどんな会話が交わされていたのかはわかりませんが、「俺は悪口とか言わないよ」「俺はヒモになったりしないよ」みたいな発言をしていたのかな?と想像すると、ちょっと可愛く思えてきてしまいます。
最後に今回参加してくれた男女1名ずつに感想を聞いてみました。
今回は同性だけのグループと男女混合のグループの会話内容を比べてみました。なんとなく分かっていることや感じていることを、今回のようにデータとして取って分析してみるのはとても面白いです。
今回使ったPythonのライブラリgensimには、TF-IDFを求めるだけでなく、トピック分析などいろいろな機能が備わっています。Pythonは自然言語処理を行うためのライブラリが豊富なので、みなさんもぜひ挑戦してみてください。
(執筆:らんらん 編集:Workship MAGAZINE編集部)
意識的に異性がいるかどうかで態度を変えたりしているつもりはあまりなかったのですが、改めて振り返ってみると、やっぱり男子がいるとちょっと良く思われたい……って自然と考えて話してるんだなあと」