如何使用从网站抓取的数据到 Word2vec Gensim

How to use scraped data from website to Word2vec Gensim

我对 MySQL、Gensim 和 Word2Vec 还很陌生,我仍在通过个人项目学习如何使用。

我有通过网络抓取获得的数据,因此它不是硬编码的。 (我使用 Instagram 帐户从几个 post 获取主题标签数据,所以我的数据是 Instagram 标签)

我正在尝试在下面的代码中使用该数据:

import pymysql.cursors
import re
from gensim.models import Word2Vec

# Connect to the database
connection = pymysql.connect(host=secrets[0],
user=username,
password=password,
db='test',
charset='charsetExample',
cursorclass=pymysql.cursors.DictCursor)

try:
    # connection to database
    with connection.cursor() as cursor:
    # cursor is iterator / 'Select' - caption is column 
     # post is the table 
     cursor.execute("SELECT caption FROM posts LIMIT 1000")
     data = cursor.fetchall()
     # list of captions
      captions = [d['caption'].lower() for d in data]
     # hashtags = [re.findall(r"#([A-Za-z_0-9]+)", caption) for caption in captions]
    # hashtags = [hashtag for hashtag in hashtags if hashtag != []]
    model = Word2Vec(captions, min_count=1)
    model = Word2Vec(hashtags) 
    res = model.wv.most_similar("fitness")

    print(captions)
    print(res)

finally:
    connection.close()

这是我正在处理的部分,但不确定该怎么做:

res = model.wv.most_similar("fitness")

现在我正在尝试使用 most_similar() 方法来查看它是如何工作的。 我想做的是 most_similar("value") 我想使用我的数据 这将是我通过抓取 Instagram 网站获得的每个主题标签作为值。

谢谢!

好的,所以,你必须自己训练word2vec模型。您需要做的是确保您的主题标签实际上没有 # 符号和小写字母。

现在,将主题标签按 post 分组。因此,如果某些 post 有标签 #red#Wine#party,您应该从中创建一个列表,如下所示:[red, wine, party]。对每个 post 重复此操作,并将每个 post 的列表保存到新列表中。所以这个输出应该是列表列表:[[red, wine, party], [post_2_hashtags], ...]。现在您可以将其输入到 word2vec 模型并使用此行对其进行训练:

model = gensim.models.Word2Vec(
    documents,
    size=150,
    window=10,
    min_count=2,
    workers=10)
model.train(documents, total_examples=len(documents), epochs=10)
model.save("word2vec.model")

documents 是上一步创建的列表列表。然后您可以使用 model = gensim.models.Word2Vec.load("word2vec.model") 加载模型。其余的都是一样的。您仍然使用 most_similar() 方法来获取最相似的词(在本例中为主题标签)。

您唯一需要注意的是矢量大小(word2vec.model 中的size 参数)。你在训练前定义它。如果你有很多数据,你就把它设置得更大一些,如果你有更少的数据量,就把它设置得更小一些。但这是您必须弄清楚的事情,因为您是唯一可以查看您拥有的数据的人。尝试使用 size 参数并使用 most_similar() 方法评估模型。

我希望这已经够清楚了:)