一、分词以及词向量计算
1..readlines()对文本进行逐行读取,生成文本行列表list_1
2.遍历list_1,
3.利用jieba对一个元素(【‘only one sentence’】)进行分词 以及 去停用词处理,生成一个新元素(【‘word_1’,‘word_2’,......】),
4.将新元素以'space'.join(元素) + '\n'的方式写入新文本文件
5.对下一个元素重复3、4步操作,直到遍历完list_1
6.载入之前生成的新文本文件,并制作sentences
方法一:readlines读文件,然后遍历后用split()等处理,得到二维列表
sentences = [['I', 'love', 'natural', 'language', 'processing'],
['Word', 'embeddings', 'are', 'powerful'],
['Word2Vec', 'is', 'an', 'awesome', 'model'],
['Machine', 'learning', 'is', 'fascinating']]
方法二:word2vec.LineSentence(文本文件路径)读文件,(针对较大文件语料)生成迭代器
['I', 'love', 'natural', 'language', 'processing']
['Word', 'embeddings', 'are', 'powerful']
['Word2Vec', 'is', 'an', 'awesome', 'model']
['Machine', 'learning', 'is', 'fascinating']
二者区别
迭代器(Iterator):迭代器是一个可以逐个访问元素的对象。它不会一次性将所有元素加载到内存中,而是在需要时逐个产生元素。在Python中,迭代器是通过实现
__iter__()
和__next__()
方法来定义的。LineSentence
返回的是一个迭代器,它逐行读取文本文件,并在需要时生成每一行的单词列表。二维列表(Two-dimensional List):二维列表是一个列表的列表,其中每个元素也是一个列表。在Python中,您可以使用嵌套的列表来表示二维列表。在先前的示例中,
sentences
被错误地描述为一个二维列表,而实际上它是一个迭代器,其中每个元素都是一个单词列表。迭代器和二维列表有着不同的特点和用途。迭代器适用于处理大规模数据,可以逐个处理元素而不需要一次性加载全部数据到内存。二维列表适用于小规模的数据,可以直接在内存中访问和操作所有元素。
对于
LineSentence
返回的sentences
,它是一个迭代器,它允许您逐行处理文本数据,而不需要一次性将所有文本加载到内存中,这对于处理大规模文本数据非常有用。