NLP任务中的文本预处理步骤、工具和示例( 二 )


首先 , 我们下载嵌入向量 。您可以在此处手动下载或直接在笔记本中进行下载 。
!wget !unzip glove*.zip然后 , 我们创建一个向量矢量化每个数据点的函数 。句子是每个单词的平均表示 。对于空句子 , 我们将其默认为零向量 。
def vectorize(value, word_embeddings, dim = 100):sentences = value.to_list()sentence_vectors = []for i in sentences:if len(i) != 0:v = sum([word_embeddings.get(w, np.zeros((dim,))) for w ini.split()])/(len(i.split())+0.001)else:v = np.zeros((dim,))sentence_vectors.append(v)sentence_vectors = np.array(sentence_vectors)return sentence_vectors最后 , 我们对整个数据集进行矢量化处理 , 并将矢量化的numpy数组另存为文件 , 因此我们不必在每次运行代码时都再次进行此过程 。矢量化版本将以.npy文件的形式保存为numpy数组 。Numpy包方便存储和处理海量数组数据 。
作为我的个人标准做法 , 我尝试将每个部分之后的所有数据保存为单独的文件 , 以评估数据并更灵活地更改代码 。
def vectorize_data(data = http://kandian.youth.cn/index/data, value ='english_text', dim = 100):# Extract word vectorsword_embeddings = {}f = open('glove.6B.{}d.txt'.format(str(dim)), encoding='utf-8')for line in f:values = line.split()word = values[0]coefs = np.asarray(values[1:], dtype='float32')word_embeddings[word] = coefsf.close()text_vec = vectorize(data[value], word_embeddings, dim)np.save("vectorized_{}.npy".format(str(dim)), text_vec)print("Done. Data:", text_vec.shape)return True总结数据预处理 , 特别是文本预处理 , 可能是一个非常麻烦的过程 。机器学习工程师工作流程的很大一部分将用于这些清理和格式化数据(如果您的数据已经完全清理好了 , 那么 , 幸运的是 , 对于所有实现这一目标的工程师来说 , 他们都感到很荣幸) 。
这篇文章中的所有代码都是非常抽象的 , 可以应用于许多数据项目(您只需更改列名 , 所有代码都可以正常工作) 。在笔记本中 , 我还添加了异常功能来处理故障情况 , 以确保您的代码不会在中途崩溃 。我希望它对您的项目有帮助 , 就像对我的帮助一样 。
最后 , 所有的代码可以在这里找到:github/viethoangtranduong/covid19-tweets
作者:Viet Hoang Tran Duong
deephub翻译组