【发布时间】:2021-07-02 00:05:20
【问题描述】:
我需要将 MySQL 数据库的一列(大约 300 万行)中包含的文本放入令牌列表列表中。这些文本(它们是推文,因此它们通常很短)必须在包含在列表中之前进行预处理(必须删除停用词、主题标签、标签等)。该列表稍后应作为Word2Vec 参数传递。这是涉及到的部分代码
import mysql.connector
import re
from gensim.models import Word2Vec
import preprocessor as p
p.set_options(
p.OPT.URL,
p.OPT.MENTION,
p.OPT.HASHTAG,
p.OPT.NUMBER
)
conn = mysql.connector.connect(...)
cursor = conn.cursor()
query = "SELECT text FROM tweet"
cursor.execute(query)
table = cursor.fetchall()
stopwords = open('stopwords.txt', encoding='utf-8').read().split('\n')
sentences = []
for row in table:
sentences = sentences + [[w for w in re.sub(r'[^\w\s-]', ' ', p.clean(row[0])).lower().split() if w not in stopwords and len(w) > 2]]
cursor.close()
conn.close()
model = Word2Vec(sentences)
...
显然这需要很多时间,而且我知道我的方法可能效率低下。谁能推荐一个更好的?我知道这不是与gensim 和Word2Vec 直接相关的问题,但可能使用它们的人已经面临处理大量文本的问题。
【问题讨论】:
标签: python nlp gensim word2vec