Python 你能快点吗?语句到Numpy数组映射

Python 你能快点吗?语句到Numpy数组映射,python,numpy,vector,vectorization,embedding,Python,Numpy,Vector,Vectorization,Embedding,我有一串韩语。我需要将它映射到一个numpy数组中,其中每个字母都以一种热方式编码 import numpy as np import time def embed_letter(x: str) -> np.array: # input: one Korean letter # maps the letter into ... # output: one-hot encoded np.array of size - (72,) time.sleep(0.0

我有一串韩语。我需要将它映射到一个numpy数组中,其中每个字母都以一种热方式编码

import numpy as np
import time

def embed_letter(x: str) -> np.array:
    # input: one Korean letter
    # maps the letter into ...
    # output: one-hot encoded np.array of size - (72,)
    time.sleep(0.0001) # to represent the time it takes to map ?
    return np.zeros((72,)) # to represent the mapped letter
    

def embed_sentence(sentence: str, max_length: int) -> np.array:
    embedded_char_list = []
    append = embedded_char_list.append
   
    end = len(sentence) if len(sentence) < max_length else max_length

    for i in range(end):
        append(embed_letter(sentence[i]))

    stacked = np.stack(embedded_char_list, axis=0)
    
    return stacked

# example usage
embed_sentence("11111111", 500)
# will output a numpy array containing zeros of shape (8, 72)
将numpy导入为np
导入时间
def嵌入字母(x:str)->np.array:
#输入:一个韩文字母
#将字母映射到。。。
#输出:一个大小为-(72,)的热编码np.array
time.sleep(0.0001)#表示映射所需的时间?
返回np.zero((72,)#以表示映射的字母
def嵌入句子(句子:str,最大长度:int)->np.array:
嵌入式字符列表=[]
append=embedded\u char\u list.append
如果len(句子)

我想通过向量化
嵌入字母
使
嵌入句子
更快。你能这样做吗?如果可以,怎么做?有没有其他方法可以加快速度?谢谢

我希望您使用的是韩语Jamo_扩展B字母表集(72个字符)。如果是这样的话,这应该可以完成以下工作:

#https://en.wikipedia.org/wiki/Hangul_Jamo_Extended-B
hangul_jamo_extended_b=[chr(a)表示一个in-list(范围(5521655239))+list(范围(5524355292))]
hangul_jamo_extended_b=np.数组(hangul_jamo_extended_b)
印刷品(韩文版)
>>> ['ힰ' 'ힱ' 'ힲ' 'ힳ' 'ힴ' 'ힵ' 'ힶ' 'ힷ' 'ힸ' 'ힹ' 'ힺ' 'ힻ' 'ힼ' 'ힽ' 'ힾ' 'ힿ' 'ퟀ' 'ퟁ'
'ퟂ' 'ퟃ' 'ퟄ' 'ퟅ' 'ퟆ' 'ퟋ' 'ퟌ' 'ퟍ' 'ퟎ' 'ퟏ' 'ퟐ' 'ퟑ' 'ퟒ' 'ퟓ' 'ퟔ' 'ퟕ' 'ퟖ' 'ퟗ'
'ퟘ' 'ퟙ' 'ퟚ' 'ퟛ' 'ퟜ' 'ퟝ' 'ퟞ' 'ퟟ' 'ퟠ' 'ퟡ' 'ퟢ' 'ퟣ' 'ퟤ' 'ퟥ' 'ퟦ' 'ퟧ' 'ퟨ' 'ퟩ'
'ퟪ' 'ퟫ' 'ퟬ' 'ퟭ' 'ퟮ' 'ퟯ' 'ퟰ' 'ퟱ' 'ퟲ' 'ퟳ' 'ퟴ' 'ퟵ' 'ퟶ' 'ퟷ' 'ퟸ' 'ퟹ' 'ퟺ' 'ퟻ']
定义嵌入句子(i:str):
索引=np.searchsorted(韩语jamo扩展b,列表(i))
表=np.零((len(i),72))
表[np.arange(len(i)),指数]=1
返回表
嵌入句子('ힰퟝힱퟺퟻ')
>>>…np.array带有一个热编码字符
如果np.searchsorted不适用于您,您应该以某种方式找到映射的索引。我建议制作一个字典并使用内置的
translate
功能。找到索引后(如
(3、4、12、72等)
),其余的都是一样的


顺便说一句,为我糟糕的韩语道歉:)

为什么一次追加一个字母,而不是一次追加整个范围?也就是说,您的代码目前根本没有运行;它失败了,原因是
NameError:name“句子”没有定义。
。请确保您的代码与您想询问的问题完全一致(或者,对于一些可以工作但速度太慢的程序,请确保它仍能按要求工作)。@CharlesDuffy我已经修改了我的问题。
embed\u letter
中实际上还有一些代码,但要运行它,您需要安装其他库,所以我将该逻辑替换为类似的行为。