Spaces:
Sleeping
Sleeping
Kota Takahashi
commited on
Commit
•
44bec05
1
Parent(s):
fbd2a16
説明文を修正
Browse files- cosine_similarity_calculator.py +9 -9
- news_scraper.py +10 -8
- tfidf_calculator.py +1 -1
cosine_similarity_calculator.py
CHANGED
@@ -11,10 +11,10 @@ class CosineSimilarityCalculator:
|
|
11 |
事前トレーニング済みのWord2Vecモデルをロード
|
12 |
|
13 |
Parameters:
|
14 |
-
-
|
15 |
|
16 |
Returns:
|
17 |
-
-
|
18 |
"""
|
19 |
self.model = gensim.models.Word2Vec.load(CosineSimilarityCalculator.model_path)
|
20 |
|
@@ -32,27 +32,27 @@ class CosineSimilarityCalculator:
|
|
32 |
|
33 |
def _calculate_cosine_similarity(self, embedding1, embedding2):
|
34 |
"""
|
35 |
-
|
36 |
|
37 |
Parameters:
|
38 |
-
- embedding1 (numpy.ndarray): 1
|
39 |
-
- embedding2 (numpy.ndarray): 2
|
40 |
|
41 |
Returns:
|
42 |
-
- similarity (numpy.ndarray):
|
43 |
"""
|
44 |
return cosine_similarity(embedding1, embedding2)
|
45 |
|
46 |
def calculate_similarity(self, search_word, article_keyword_list):
|
47 |
"""
|
48 |
-
|
49 |
モデルにない単語の場合はエラーメッセージを出力しブレイクする
|
50 |
|
51 |
Parameters:
|
52 |
- search_word (str): 検索ワード
|
53 |
- article_keyword_list (list): 記事のキーワードリスト
|
54 |
Returns:
|
55 |
-
- similarities (dict):
|
56 |
モデルにない単語の場合はNoneを返す
|
57 |
"""
|
58 |
# 検索ワードの埋め込みベクトルを取得
|
@@ -72,4 +72,4 @@ class CosineSimilarityCalculator:
|
|
72 |
similarities[keyword] = similarity[0][0]
|
73 |
else:
|
74 |
similarities[keyword] = None
|
75 |
-
return similarities
|
|
|
11 |
事前トレーニング済みのWord2Vecモデルをロード
|
12 |
|
13 |
Parameters:
|
14 |
+
- なし
|
15 |
|
16 |
Returns:
|
17 |
+
- なし
|
18 |
"""
|
19 |
self.model = gensim.models.Word2Vec.load(CosineSimilarityCalculator.model_path)
|
20 |
|
|
|
32 |
|
33 |
def _calculate_cosine_similarity(self, embedding1, embedding2):
|
34 |
"""
|
35 |
+
cos類似度を計算
|
36 |
|
37 |
Parameters:
|
38 |
+
- embedding1 (numpy.ndarray): 1つ目の単語ベクトル(2次元配列)
|
39 |
+
- embedding2 (numpy.ndarray): 2つ目の単語ベクトル(2次元配列)
|
40 |
|
41 |
Returns:
|
42 |
+
- similarity (numpy.ndarray): cos類似度
|
43 |
"""
|
44 |
return cosine_similarity(embedding1, embedding2)
|
45 |
|
46 |
def calculate_similarity(self, search_word, article_keyword_list):
|
47 |
"""
|
48 |
+
指定された検索ワードと記事のキーワードリストの間のcos類似度を計算
|
49 |
モデルにない単語の場合はエラーメッセージを出力しブレイクする
|
50 |
|
51 |
Parameters:
|
52 |
- search_word (str): 検索ワード
|
53 |
- article_keyword_list (list): 記事のキーワードリスト
|
54 |
Returns:
|
55 |
+
- similarities (dict): 記事キーワードとそれぞれの検索ワードのcos類似度を含むdictを作成
|
56 |
モデルにない単語の場合はNoneを返す
|
57 |
"""
|
58 |
# 検索ワードの埋め込みベクトルを取得
|
|
|
72 |
similarities[keyword] = similarity[0][0]
|
73 |
else:
|
74 |
similarities[keyword] = None
|
75 |
+
return similarities
|
news_scraper.py
CHANGED
@@ -7,19 +7,19 @@ from time import sleep
|
|
7 |
class Scraper:
|
8 |
def __init__(self):
|
9 |
"""
|
10 |
-
Scraperクラスを初期化し、requests
|
11 |
"""
|
12 |
self.session = requests.Session()
|
13 |
|
14 |
def _fetch_content(self, url):
|
15 |
"""
|
16 |
-
指定されたURL
|
17 |
|
18 |
Parameters:
|
19 |
-
- url (str): 取得するウェブページのURL
|
20 |
|
21 |
Returns:
|
22 |
-
- content (bytes):
|
23 |
"""
|
24 |
response = self.session.get(url)
|
25 |
response.raise_for_status() # HTTPエラーが発生した場合は例外を投げる
|
@@ -27,13 +27,13 @@ class Scraper:
|
|
27 |
|
28 |
def _parse_html(self, html):
|
29 |
"""
|
30 |
-
HTMLコンテンツをBeautifulSoup
|
31 |
|
32 |
Parameters:
|
33 |
-
- html (bytes): パースするHTML
|
34 |
|
35 |
Returns:
|
36 |
-
- soup (BeautifulSoup): パースされたBeautifulSoup
|
37 |
"""
|
38 |
soup = BeautifulSoup(html, 'html.parser')
|
39 |
return soup
|
@@ -44,7 +44,7 @@ class YahooNewsScraper(Scraper):
|
|
44 |
|
45 |
def get_news_urls(self):
|
46 |
"""
|
47 |
-
Yahooニュースのトップページから最新ニュース記事のURL
|
48 |
|
49 |
Parameters:
|
50 |
- なし
|
@@ -129,3 +129,5 @@ class YahooNewsScraper(Scraper):
|
|
129 |
sleep(1) # サーバー負荷を避けるためにさらに1秒待機
|
130 |
article_text = self.get_full_article_text(detail_url)
|
131 |
return article_text, detail_url
|
|
|
|
|
|
7 |
class Scraper:
|
8 |
def __init__(self):
|
9 |
"""
|
10 |
+
Scraperクラスを初期化し、requestsセッションを作成
|
11 |
"""
|
12 |
self.session = requests.Session()
|
13 |
|
14 |
def _fetch_content(self, url):
|
15 |
"""
|
16 |
+
指定されたURLのコンテンツを取得する
|
17 |
|
18 |
Parameters:
|
19 |
+
- url (str): 取得するウェブページのURL
|
20 |
|
21 |
Returns:
|
22 |
+
- content (bytes): 取得したコンテンツのデータ
|
23 |
"""
|
24 |
response = self.session.get(url)
|
25 |
response.raise_for_status() # HTTPエラーが発生した場合は例外を投げる
|
|
|
27 |
|
28 |
def _parse_html(self, html):
|
29 |
"""
|
30 |
+
HTMLコンテンツをBeautifulSoupでパース
|
31 |
|
32 |
Parameters:
|
33 |
+
- html (bytes): パースするHTMLコンテンツ
|
34 |
|
35 |
Returns:
|
36 |
+
- soup (BeautifulSoup): パースされたBeautifulSoupオブジェクト
|
37 |
"""
|
38 |
soup = BeautifulSoup(html, 'html.parser')
|
39 |
return soup
|
|
|
44 |
|
45 |
def get_news_urls(self):
|
46 |
"""
|
47 |
+
Yahooニュースのトップページから最新ニュース記事のURLを取得
|
48 |
|
49 |
Parameters:
|
50 |
- なし
|
|
|
129 |
sleep(1) # サーバー負荷を避けるためにさらに1秒待機
|
130 |
article_text = self.get_full_article_text(detail_url)
|
131 |
return article_text, detail_url
|
132 |
+
|
133 |
+
|
tfidf_calculator.py
CHANGED
@@ -5,7 +5,7 @@ from sklearn.feature_extraction.text import TfidfVectorizer
|
|
5 |
|
6 |
class JapaneseTextVectorizer:
|
7 |
def __init__(self):
|
8 |
-
"""
|
9 |
MeCabのTaggerとTF-IDFベクトライザーを初期化
|
10 |
"""
|
11 |
self.mecab_tagger = MeCab.Tagger()
|
|
|
5 |
|
6 |
class JapaneseTextVectorizer:
|
7 |
def __init__(self):
|
8 |
+
"""
|
9 |
MeCabのTaggerとTF-IDFベクトライザーを初期化
|
10 |
"""
|
11 |
self.mecab_tagger = MeCab.Tagger()
|