ユーザ用ツール

サイト用ツール


korean:mecab:python_tfidf

差分

このページの2つのバージョン間の差分を表示します。

この比較画面へのリンク

両方とも前のリビジョン前のリビジョン
次のリビジョン
前のリビジョン
korean:mecab:python_tfidf [2021/11/06 23:45] – [やること] yoshikorean:mecab:python_tfidf [2021/12/13 23:32] (現在) – [やること] yoshi
行 24: 行 24:
 韓国の新聞社サイトで公開されているRSSフィードを使って,リストにある記事を取得し,名詞類(普通名詞,固有名詞,語根)のTF-IDFを計算します.その上で,リスト中の記事から10本をランダムに選び,TF-IDF上位10語を列挙します. 韓国の新聞社サイトで公開されているRSSフィードを使って,リストにある記事を取得し,名詞類(普通名詞,固有名詞,語根)のTF-IDFを計算します.その上で,リスト中の記事から10本をランダムに選び,TF-IDF上位10語を列挙します.
  
-ここでは例として,경향신문(京郷新聞)の[[https://www.khan.co.kr/help/help_rss.html|RSSサービス]]から,「政治」カテゴリのフィードを利用します.大手の新聞社でRSSサービスを行っているのは以下の通りです:+ここでは例として,경향신문(京郷新聞)の[[https://www.khan.co.kr/help/help_rss.html|RSSサービス]]から,「정치(政治」カテゴリのフィードを利用します.大手の新聞社でRSSサービスを行っているのは以下の通りです:
  
-  * [[https://rssplus.chosun.com/|조선일보(朝鮮日報)]]:更新されていない +  * [[https://rssplus.chosun.com/|조선일보(朝鮮日報)]]:記事の構造分からない 
-  * [[https://rss.joins.com/|중앙일보(中央日報)]]+  * [[https://rss.joins.com/|중앙일보(中央日報)]]:カテゴリによっては更新されていない・リンクが切れている
   * [[http://rss.donga.com/|동아일보(東亜日報)]]:記事の構造が分からない   * [[http://rss.donga.com/|동아일보(東亜日報)]]:記事の構造が分からない
   * [[https://www.hani.co.kr/arti/RSS/|한겨레(ハンギョレ)]]   * [[https://www.hani.co.kr/arti/RSS/|한겨레(ハンギョレ)]]
   * [[http://www.nocutnews.co.kr/rss/|노컷뉴스(ノーカットニュース/CBS)]]   * [[http://www.nocutnews.co.kr/rss/|노컷뉴스(ノーカットニュース/CBS)]]
 +  * [[http://rss.kmib.co.kr/|국민일보(国民日報)]]
 +  * [[https://www.segye.com/rssInfo|세계일보(世界日報)]]
 +  * [[http://rss.hankooki.com/|한국아이닷컴(hankooki.com)]]
 +  * [[https://www.mk.co.kr/rss/|매일경제(毎日経済)]]
  
 付記した理由から,ここでは경향신문を取り上げることにします.他のRSSを利用する場合,適宜読み替えてください. 付記した理由から,ここでは경향신문を取り上げることにします.他のRSSを利用する場合,適宜読み替えてください.
行 43: 行 47:
 from sklearn.feature_extraction.text import TfidfVectorizer from sklearn.feature_extraction.text import TfidfVectorizer
 import pandas as pd import pandas as pd
-from k2jamo import substitute_main+import k2jamo
 </code> </code>
  
行 70: 行 74:
     soup = BeautifulSoup(html.content, 'html.parser')     soup = BeautifulSoup(html.content, 'html.parser')
     # 경향신문向け     # 경향신문向け
-    articles = soup.find_all('p', class_ = 'content_text')+    articles = soup.select('p.content_text')
     # 중앙일보向け     # 중앙일보向け
     # articles = soup.select('#article_body > p')     # articles = soup.select('#article_body > p')
行 80: 行 84:
 なお,記事本文が格納されている要素はサイトによって異なります.ここまで分かっている中では,중앙일보(中央日報)の場合,「경향신문向け」としてある次の行をコメントアウトして,''articles = soup.select('#article_body > p')''の方を使用すると,記事本文が取り出せます.他はまだ調査中です. なお,記事本文が格納されている要素はサイトによって異なります.ここまで分かっている中では,중앙일보(中央日報)の場合,「경향신문向け」としてある次の行をコメントアウトして,''articles = soup.select('#article_body > p')''の方を使用すると,記事本文が取り出せます.他はまだ調査中です.
  
-> [2021/11/06 追加] 한겨레(ハンギョレ)''articles = soup.find_all('div', class_ = 'article-text')''で取得できました.+> [2021/11/06 追加] いくつか調べた結果,書き換えの内容は以下の通りです. 
 +
 +한겨레(ハンギョレ) ''articles = soup.select('div.article-text')'' 
 +> 노컷뉴스(ノーカットニュース・CBS) ''articles = soup.select('div', id = 'pnlContent')''
  
 ===== MeCabによる解析 ===== ===== MeCabによる解析 =====
行 127: 行 134:
 for i in range(len(rss_list)): for i in range(len(rss_list)):
     print("processing:", i+1, "/", len(rss_list))     print("processing:", i+1, "/", len(rss_list))
-    text = substitute_main(news_scraping(rss_list[i].link.text))+    text = k2jamo.substitute(news_scraping(rss_list[i].link.text))
     text = extract(text)     text = extract(text)
     titles.append(rss_list[i].title.text)     titles.append(rss_list[i].title.text)
行 158: 行 165:
 </code> </code>
  
-結果は以下の通り.+実行結果は以下の通り.フィードの項目(item)数が10以下だとエラーになります.''random.sample()''で取り出す数を変更してください
  
 <code bash> <code bash>
korean/mecab/python_tfidf.1636209909.txt.gz · 最終更新: 2021/11/06 23:45 by yoshi