def classify(self,link): # 対象記事の形態素解析 html = urllib.request.urlopen(link) soup = BeautifulSoup(html, 'html.parser') text = soup.find_all("p") text = [t.text for t in text] text = ','.join(text) words = nagisa.tagging(text) words = nagisa.filter(text, filter_postags=['助詞', '助動詞','接頭辞','接尾辞','補助記号','URL','空白']).words words = list(filter(lambda x: len(x) != 1, words)) # 一文字の単語を削除 words = list(filter(lambda x: x != '', [re.sub(r'[0-9]', "", s) for s in words]))# 数字を削除 # 学習データをloadする self.word_ct = np.load('./classify_app/data/word_ct.npy',allow_pickle=True).tolist() self.category_ct = np.load('./classify_app/data/category_ct.npy',allow_pickle=True).tolist() self.vocabularies = np.load('./classify_app/data/vocabularies.npy',allow_pickle=True).tolist() best_category = None # もっとも近いカテゴリ max_prob = -sys.maxsize# 最小整数値を設定 # カテゴリ毎に対象文書(単語)のカテゴリー出現率P(C|W)を求める for category in self.category_ct.keys(): # 文書内のカテゴリー出現率P(C|W)を求める prob = self.score(words, category) if prob > max_prob: max_prob = prob best_category = category return best_category
def test_tagging(self): # test_1 text = 'Pythonで簡単に使えるツールです' output = 'Python/名詞 で/助詞 簡単/形状詞 に/助動詞 使える/動詞 ツール/名詞 です/助動詞' words = nagisa.tagging(text) self.assertEqual(output, str(words)) # test_2 text = 'ニューラルネットワークを使ってます。' output = 'ニューラル/名詞 ネットワーク/名詞 を/助詞 使っ/動詞 て/助動詞 ます/助動詞 。/補助記号' self.assertEqual(output, str(nagisa.tagging(text))) # test_3 tagger_nn = nagisa.Tagger(single_word_list=['ニューラルネットワーク']) output = 'ニューラルネットワーク/名詞 を/助詞 使っ/動詞 て/助動詞 ます/助動詞 。/補助記号' self.assertEqual(output, str(tagger_nn.tagging(text))) # test_4 text = '(人•ᴗ•♡)こんばんは♪' output = '(人•ᴗ•♡)/補助記号 こんばんは/感動詞 ♪/補助記号' words = nagisa.tagging(text) self.assertEqual(output, str(words)) # test_5 url = 'https://github.com/taishi-i/nagisaでコードを公開中(๑¯ω¯๑)' output = 'コード/名詞 公開/名詞 中/接尾辞' words = nagisa.filter(url, filter_postags=['URL', '補助記号', '助詞']) self.assertEqual(output, str(words))
def test_tagging(self): # test_1 text = 'Pythonで簡単に使えるツールです' output = 'Python/名詞 で/助詞 簡単/形状詞 に/助動詞 使える/動詞 ツール/名詞 です/助動詞' words = nagisa.tagging(text) self.assertEqual(output, str(words)) # test_2 output = 'python/名詞 で/助詞 簡単/形状詞 に/助動詞 使える/動詞 ツール/名詞 です/助動詞' words = nagisa.tagging(text, lower=True) self.assertEqual(output, str(words)) # test_3 text = 'ニューラルネットワークを使ってます。' output = 'ニューラル/名詞 ネットワーク/名詞 を/助詞 使っ/動詞 て/助動詞 ます/助動詞 。/補助記号' self.assertEqual(output, str(nagisa.tagging(text))) # test_4 tagger_nn = nagisa.Tagger(single_word_list=['ニューラルネットワーク', "ニューラルネット"]) output = 'ニューラルネットワーク/名詞 を/助詞 使っ/動詞 て/助動詞 ます/助動詞 。/補助記号' self.assertEqual(output, str(tagger_nn.tagging(text))) # test_5 text = "3月に見た「3月のライオン」" new_tagger = nagisa.Tagger(single_word_list=['3月のライオン']) output = '3/名詞 月/名詞 に/助詞 見/動詞 た/助動詞 「/補助記号 3月のライオン/名詞 」/補助記号' self.assertEqual(output, str(new_tagger.tagging(text))) # test_6 text = '(人•ᴗ•♡)こんばんは♪' output = '(人•ᴗ•♡)/補助記号 こんばんは/感動詞 ♪/補助記号' words = nagisa.tagging(text) self.assertEqual(output, str(words)) # test_7 url = 'https://github.com/taishi-i/nagisaでコードを公開中(๑¯ω¯๑)' output = 'コード/名詞 公開/名詞 中/接尾辞' words = nagisa.filter(url, filter_postags=['URL', '補助記号', '助詞']) self.assertEqual(output, str(words)) # test_8 output = 'https://github.com/taishi-i/nagisa/URL で/助詞 を/助詞 (๑ ̄ω ̄๑)/補助記号' words = nagisa.extract(url, extract_postags=['URL', '補助記号', '助詞']) self.assertEqual(output, str(words)) # test_9 words = [" (人•ᴗ•♡)", "こんばんは", "♪"] output = ['補助記号', '感動詞', '補助記号'] postags = nagisa.postagging(words) self.assertEqual(output, postags) # test_10 postags = nagisa.decode(words) self.assertEqual(output, postags)
def Morphological_analysis(link): html = urllib.request.urlopen(link) soup = BeautifulSoup(html, 'html.parser') text = soup.find_all("p") text = [t.text for t in text] text = ','.join(text) words = nagisa.tagging(text) words = nagisa.filter( text, filter_postags=['助詞', '助動詞', '接頭辞', '接尾辞', '補助記号', 'URL', '空白']).words words = list(filter(lambda x: len(x) != 1, words)) # 一文字の単語を削除 words = list( filter(lambda x: x != '', [re.sub(r'[0-9]', "", s) for s in words])) # 数字を削除 return words
def test_tagging(self): # test_1 text = 'Pythonで簡単に使えるツールです' output = 'Python/名詞 で/助詞 簡単/形状詞 に/助動詞 使える/動詞 ツール/名詞 です/助動詞' words = nagisa.tagging(text) self.assertEqual(output, str(words)) # test_2 output = 'python/名詞 で/助詞 簡単/形状詞 に/助動詞 使える/動詞 ツール/名詞 です/助動詞' words = nagisa.tagging(text, lower=True) self.assertEqual(output, str(words)) # test_3 text = 'ニューラルネットワークを使ってます。' output = 'ニューラル/名詞 ネットワーク/名詞 を/助詞 使っ/動詞 て/助動詞 ます/助動詞 。/補助記号' self.assertEqual(output, str(nagisa.tagging(text))) # test_4 tagger_nn = nagisa.Tagger(single_word_list=['ニューラルネットワーク', "ニューラルネット"]) output = 'ニューラルネットワーク/名詞 を/助詞 使っ/動詞 て/助動詞 ます/助動詞 。/補助記号' self.assertEqual(output, str(tagger_nn.tagging(text))) # test_5 text = "3月に見た「3月のライオン」" new_tagger = nagisa.Tagger(single_word_list=['3月のライオン']) output = '3/名詞 月/名詞 に/助詞 見/動詞 た/助動詞 「/補助記号 3月のライオン/名詞 」/補助記号' self.assertEqual(output, str(new_tagger.tagging(text))) # test_6 text = "それが、iPhone XSです。" output = "それ/代名詞 が/助詞 、/補助記号 iPhone XS/名詞 です/助動詞 。/補助記号" new_tagger = nagisa.Tagger(single_word_list=["iPhone[a-zA-Z0-9 ]+"]) self.assertEqual(output, str(new_tagger.tagging(text))) # test_7 text = "1234abc ABC" output = "1234/名詞 abc ABC/名詞" new_tagger = nagisa.Tagger(single_word_list=["[a-zA-Z ]+", "[0-9]+"]) self.assertEqual(output, str(new_tagger.tagging(text))) # test_8 text = '(人•ᴗ•♡)こんばんは♪' output = '(人•ᴗ•♡)/補助記号 こんばんは/感動詞 ♪/補助記号' words = nagisa.tagging(text) self.assertEqual(output, str(words)) # test_9 url = 'https://github.com/taishi-i/nagisaでコードを公開中(๑¯ω¯๑)' output = 'コード/名詞 公開/名詞 中/接尾辞' words = nagisa.filter(url, filter_postags=['URL', '補助記号', '助詞']) self.assertEqual(output, str(words)) # test_10 output = 'https://github.com/taishi-i/nagisa/URL で/助詞 を/助詞 (๑ ̄ω ̄๑)/補助記号' words = nagisa.extract(url, extract_postags=['URL', '補助記号', '助詞']) self.assertEqual(output, str(words)) # test_11 words = [" (人•ᴗ•♡)", "こんばんは", "♪"] output = ['補助記号', '感動詞', '補助記号'] postags = nagisa.postagging(words) self.assertEqual(output, postags) # test_12 postags = nagisa.decode(words) self.assertEqual(output, postags) # test_13 words = [" (人•ᴗ•♡)", " ", "こんばんは", "♪"] output = ['補助記号', "空白", '感動詞', '補助記号'] postags = nagisa.postagging(words) self.assertEqual(output, postags) # test_14 postags = nagisa.decode(words) self.assertEqual(output, postags) # test_15 words = [" (人•ᴗ•♡)", " ", "こんばんは", "♪"] output = ['補助記号', "空白", '感動詞', '補助記号'] postags = nagisa.postagging(words) self.assertEqual(output, postags) # test_16 postags = nagisa.decode(words) self.assertEqual(output, postags) # test_17 text = "こんばんは😀" output = "こんばんは/感動詞 😀/補助記号" words = nagisa.tagging(text) self.assertEqual(output, str(words)) # test_18 text = "コンバンハ12345" output = "コンバンハ/名詞 1/名詞 2/名詞 3/名詞 4/名詞 5/名詞" words = nagisa.tagging(text) self.assertEqual(output, str(words)) # test_19 text = "𪗱𪘂𪘚𪚲" output = "𪗱/補助記号 𪘂/補助記号 𪘚/補助記号 𪚲/補助記号" words = nagisa.tagging(text) self.assertEqual(output, str(words))
def tokenize(self, line): tagged = nagisa.filter(line, filter_postags=g_stop_poses) return tagged.words
if __name__ == "__main__": api = twitter.Api(CONSUMER_KEY, CONSUMER_SECRET, ACCESS_TOKEN_KEY, ACCESS_TOKEN_SECRET) screen_name = sys.argv[1] print(screen_name) timeline = get_tweets(api=api, screen_name=screen_name) all_together = '' for tweet in timeline: all_together += tweet.text + "\n" print("hello") taggings = nagisa.filter(all_together, filter_postags=[ '補助記号', '空白', '助詞', '助動詞', '記号', 'URL', '英単語', 'ローマ字文' ]) freq = {} for word in filter(validate_japanese, taggings.words): freq[word] = freq.get(word, 0) + 1 # Sort by value sorted_freq = OrderedDict(sorted(freq.items(), key=lambda x: x[1]), reverse=True) output = "Word,Count\n" for key, value in sorted_freq.items(): output += "%s,%d\n" % (key, value)