コード例 #1
0
  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
コード例 #2
0
ファイル: nagisa_test.py プロジェクト: liben2018/nagisa
    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))
コード例 #3
0
    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
コード例 #5
0
    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))
コード例 #6
0
 def tokenize(self, line):
     tagged = nagisa.filter(line, filter_postags=g_stop_poses)
     return tagged.words
コード例 #7
0
ファイル: main.py プロジェクト: rzhw/jp-word-frequency
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)