Python 如何填充n维数组
我有一个单词嵌入矩阵,它是这样的-Python 如何填充n维数组,python,nlp,Python,Nlp,我有一个单词嵌入矩阵,它是这样的- ([["word1","word2"...],["word6","word5"....],[...],[....]......]) 这里的数组是句子,单词是嵌入的, 嵌入件具有形状(100,) 并非所有的句子都有相同的长度,我希望所有的句子都有相同的长度,我想填充和修剪我该怎么做?以下是我的尝试。我从一个简单的例子开始,其中有三个句子,一个有5个单词,一个有3个单词,一个有4个单词。平均值是4,所以最后一句没有变化,第一句被截断,第二句用0填充 samp
([["word1","word2"...],["word6","word5"....],[...],[....]......])
这里的数组是句子,单词是嵌入的,
嵌入件具有形状(100,)
并非所有的句子都有相同的长度,我希望所有的句子都有相同的长度,我想填充和修剪我该怎么做?以下是我的尝试。我从一个简单的例子开始,其中有三个句子,一个有5个单词,一个有3个单词,一个有4个单词。平均值是4,所以最后一句没有变化,第一句被截断,第二句用0填充
sample_sentences = [[1,2,3,4,5],[1,2,3],[1,2,3,4]]
mean = 0
for element in sample_sentences:
mean += len(element)
mean = mean/len(sample_sentences)
for element in sample_sentences:
difference =0
if (len(element)<mean):
difference = int(mean)-len(element)
for i in range (difference):
element.append(0)
if(len(element)>mean):
del element[int(mean):]
print(sample_sentences)
sample_语句=[[1,2,3,4,5],[1,2,3],[1,2,3,4]]
平均值=0
对于示例句子中的元素:
平均值+=len(元素)
平均值=平均值/长度(例句)
对于示例句子中的元素:
差=0
如果(长度(元素)平均值):
del元素[int(平均值):]
打印(例句)
输出:
如果需要长度为差的零向量:
sample_sentences = [[1,2,3,4,5],[1,2,3],[1,2,3,4]]
mean = 0
for element in sample_sentences:
mean += len(element)
mean = mean/len(sample_sentences)
for element in sample_sentences:
difference =0
if (len(element)<mean):
difference = int(mean)-len(element)
element.append([0 for x in range(difference)])
if(len(element)>mean):
del element[int(mean):]
print(sample_sentences)
sample_语句=[[1,2,3,4,5],[1,2,3],[1,2,3,4]]
平均值=0
对于示例句子中的元素:
平均值+=len(元素)
平均值=平均值/长度(例句)
对于示例句子中的元素:
差=0
如果(长度(元素)平均值):
del元素[int(平均值):]
打印(例句)
输出:
我想你已经完成了词干分析 对于下一步,您需要考虑如何生成包括文本之间的相似性的数据。通常使用弓和TD-IDF
请参阅本文:考虑以下简单功能:它使用
填充元素将列表扩展到更大的gl
def expand(x, gl, filler):
n = gl - len(x)
if n > 0:
x.extend([filler]*n)
您可以使用这个简单的函数。如果希望所有句子的长度相同,则应找到最长的句子,并填充其他句子以匹配该长度:
matrix = [["word1", "word2", "myword3"],["word6", "word5"], ["a", "b", "c", "d"]]
maxlength = max(map(len, matrix)) #get the length of the longest sentence
for sentence in matrix:
expand(sentence, maxlength, "0") #appending 0 to shorter sentences
print(matrix)
这将打印:[['word1','word2','myword3','0'],['word6','word5','0','0'],['a','b','c','d']
您希望如何准确调整句子的长度?明度不是有不同的长度吗,所以我取了平均长度,我想用零填充句子,这样每个句子都有相同的长度,并且句子的长度比平均长度长?是的,有些更长,我想用形状(100,)填充矩阵会行得通,但我不知道还有什么办法:按长度,你是指单词的数量还是字母的数量?在我的例子中,数字1,2…5是向量,我想我是在加0,而不是大向量。如果代码是一个整数,而不是一系列字符串,我相信它仍然可以工作。让我换一个示例句子来演示,这就是你要问的吗?它是float实际上它来自Word2Vec它应该可以工作,无论组成矩阵的元素的类型如何,除非使用for访问矩阵时出现问题..in..,当你尝试应用该方法时是否出现问题?如果有,我可以得到一个输出来玩吗?当填充而不是添加一个向量时,只添加了零,我想填充一个由零组成的向量。很抱歉,这是我第一次处理大向量,因为不清楚。我有一些东西,比如列表(句子)中有单词向量