Как использовать списанные данные с сайта в Word2vec Gensim - PullRequest
0 голосов
/ 07 ноября 2018

Я довольно новичок в MySQL, Gensim и Word2Vec, и я все еще учусь использовать его, работая над своим личным проектом.

У меня есть данные, которые я получил, выполняя утилизацию, так что это не жестко закодировано. (Я использовал учетную запись Instagram, чтобы получить данные хештега из нескольких постов, поэтому мои данные 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 в качестве значения.

Спасибо!

1 Ответ

0 голосов
/ 07 ноября 2018

ОК, так что вы должны самостоятельно обучить модели word2vec. Что вам нужно сделать, так это убедиться, что ваши хэштеги на самом деле не имеют знака # и строчных букв.

Теперь сгруппируйте хэштеги по почте. Итак, если в каком-то сообщении были хэштеги #red, #Wine, #party, вы должны составить из него список, который будет выглядеть так: [red, wine, party]. Повторите это для каждого сообщения и сохраните список из каждого сообщения в новый список. Таким образом, вывод из этого должен быть список списков: [[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(), чтобы получить наиболее похожее слово (в данном случае хэштег)

Единственное, что вам нужно знать, это размер вектора (параметр size в word2vec.model). Вы определяете это перед тренировкой. Если у вас много данных, вы устанавливаете большее значение, а если у вас меньшее количество данных, установите меньшее значение. Но это то, что вы должны выяснить, так как вы единственный, кто может видеть данные, которые у вас есть. Попробуйте поиграть с параметром size и оцените модель методом most_similar().

Надеюсь, это достаточно ясно:)

...