37、自然语言处理中的向量表示、词性与形态学

自然语言处理中的向量表示、词性与形态学

1. 密集向量表示

在自然语言处理中,哈希技术在处理n - gram时具有诸多优势。我们可以跳过n - gram索引,只需对任意n - gram应用哈希函数。而且,由于它总是返回一个小于模数的整数,因此不存在未知值。不过,哈希也会造成编码冲突,因为编码容量从Unicode的100万个字符减少到了模数。例如,若有大约5000个不同字符,模数为100时,平均会有50个字符具有相同的哈希值,但这并不影响分类结果。

对于字符、二元组和三元组的模数,我们使用质数 MODS = [2053, 4099, 4099] ,因为它们通常具有更好的分布特性。Python的哈希函数在不同机器上执行时并不总是返回相同的值,我们用MD5标准和以下函数替代:

import hashlib

def reproducible_hash(string: str) -> int:
    h = hashlib.md5(string.encode('utf-8'), usedforsecurity=False)
    return int.from_bytes(h.digest()[0:8], 'big', signed=True)

有了这个函数,我们就能将n - gram转换为数字代码。下面的函数将其应用于字符串列表,模数作为参数:

def hash_str_list(text: list[str], char_mod: int) -> list[i
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值