korean:mecab:python_tfidf
差分
このページの2つのバージョン間の差分を表示します。
両方とも前のリビジョン前のリビジョン次のリビジョン | 前のリビジョン | ||
korean:mecab:python_tfidf [2021/11/06 23:33] – [RSSフィードからのリンク取得および記事の処理] yoshi | korean: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:// | + | ここでは例として,경향신문(京郷新聞)の[[https:// |
- | * [[https:// | + | * [[https:// |
- | * [[https:// | + | * [[https:// |
* [[http:// | * [[http:// | ||
* [[https:// | * [[https:// | ||
+ | * [[http:// | ||
+ | * [[http:// | ||
+ | * [[https:// | ||
+ | * [[http:// | ||
+ | * [[https:// | ||
付記した理由から,ここでは경향신문を取り上げることにします.他のRSSを利用する場合,適宜読み替えてください. | 付記した理由から,ここでは경향신문を取り上げることにします.他のRSSを利用する場合,適宜読み替えてください. | ||
行 42: | 行 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 |
</ | </ | ||
行 69: | 行 74: | ||
soup = BeautifulSoup(html.content, | soup = BeautifulSoup(html.content, | ||
# 경향신문向け | # 경향신문向け | ||
- | articles = soup.find_all('p', class_ = 'content_text' | + | articles = soup.select('p.content_text' |
# 중앙일보向け | # 중앙일보向け | ||
# articles = soup.select('# | # articles = soup.select('# | ||
行 79: | 行 84: | ||
なお,記事本文が格納されている要素はサイトによって異なります.ここまで分かっている中では,중앙일보(中央日報)の場合,「경향신문向け」としてある次の行をコメントアウトして,'' | なお,記事本文が格納されている要素はサイトによって異なります.ここまで分かっている中では,중앙일보(中央日報)の場合,「경향신문向け」としてある次の行をコメントアウトして,'' | ||
- | > [2021/11/06 追加] 한겨레(ハンギョレ)は'' | + | > [2021/11/06 追加] |
+ | > | ||
+ | > 한겨레(ハンギョレ) '' | ||
+ | > 노컷뉴스(ノーカットニュース・CBS) '' | ||
===== MeCabによる解析 ===== | ===== MeCabによる解析 ===== | ||
行 126: | 行 134: | ||
for i in range(len(rss_list)): | for i in range(len(rss_list)): | ||
print(" | print(" | ||
- | 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) | ||
行 157: | 行 165: | ||
</ | </ | ||
- | 結果は以下の通り. | + | 実行結果は以下の通り.フィードの項目(item)数が10以下だとエラーになります.'' |
<code bash> | <code bash> | ||
> python handic_mecab.py | > python handic_mecab.py | ||
+ | processing: 1 / 54 | ||
Some characters could not be decoded, and were replaced with REPLACEMENT CHARACTER. | Some characters could not be decoded, and were replaced with REPLACEMENT CHARACTER. | ||
...中略... | ...中略... | ||
+ | processing: 54 / 54 | ||
Some characters could not be decoded, and were replaced with REPLACEMENT CHARACTER. | Some characters could not be decoded, and were replaced with REPLACEMENT CHARACTER. | ||
안철수 출마와 김동연, 제3지대 가능성은 | 안철수 출마와 김동연, 제3지대 가능성은 | ||
行 276: | 行 286: | ||
</ | </ | ||
- | 文字コード関連のエラーが出ますが,だいたいうまくいっているようです.中央日報の方の記事を使う場合,このエラーは出ませんでした. | + | 文字コード関連のエラーが出ますが,だいたいうまくいっているようです.경향신문以外の記事を使う場合,このエラーは出ませんでした. |
大統領選挙(대선)が近づいて,各党の候補者選び(경선)が熱を帯びていることもあり,それぞれの記事で取り扱われている候補者(후보)の名前(윤, | 大統領選挙(대선)が近づいて,各党の候補者選び(경선)が熱を帯びていることもあり,それぞれの記事で取り扱われている候補者(후보)の名前(윤, | ||
行 282: | 行 292: | ||
===== 終わりに ===== | ===== 終わりに ===== | ||
- | [[korean: | + | [[korean: |
- | + | ||
- | RSSフィートの項目数が多いと時間がかかりますが,処理中の内容,残り項目数を表示するなど,あるといいかもしれません. | + | |
{{indexmenu_n> | {{indexmenu_n> |
korean/mecab/python_tfidf.1636209207.txt.gz · 最終更新: 2021/11/06 23:33 by yoshi