python字符串结束标志_python-SpaCy如何在标记化过程中跟踪字符和标...

摘要:

在标记化期间,this是跟踪偏移量和字符的部分.

简单的答案:它在字符串中一个接一个地字符.

TL; DR在底部.

逐块解释:

它接受要标记化的字符串,并开始一次遍历一个字母/空格.

这是对字符串的简单for循环,其中uc是字符串中的当前字符.

for uc in string:

它首先检查当前字符是否为空格,然后进行比较,以查看最后的in_ws设置是否与空格相反.如果它们相同,它将向下跳并增加i = 1.

使用in_ws知道是否应该处理.他们想在空格和字符上做事,因此他们不能只跟踪isspace()并仅对False进行操作.相反,在首次启动时,将in_ws设置为string [0] .isspace()的结果,然后将其与自身进行比较.如果string [0]是一个空格,它将求值相同,因此跳过并增加i(稍后讨论),然后转到下一个uc,直到到达与第一个uc不相同的uc.在实践中,这使它在处理完第一个空格后可以在多个空格之间进行排序,或者在到达下一个空格边界之前可以对多个字符进行排序.

if uc.isspace() != in_ws:

它将继续遍历字符,直到到达下一个边界,将当前字符的索引保持为i.

它跟踪两个索引值:start和i. start是它所在的潜在令牌的开始,而i是它正在查看的结束字符.当脚本启动时,start将为0.经过一个循环,start将是最后一个空格的索引加1,这将使其成为当前单词的第一个字母.

它首先检查start是否小于i,这用于知道是否应尝试检查缓存并标记当前字符序列.这将更有意义.

if start < i:

span是当前用于标记化的单词.它是由起始索引值到i索引值切片的字符串.

span = string[start:i]

然后,它将获取单词的哈希值(从i开始),??并检查高速缓存字典以查看该单词是否已被处理.如果没有,它将在字符串的那部分调用_tokenize方法.

key = hash_string(span)

cache_hit = self._try_cache(key, doc)

if not cache_hit:

self._tokenize(doc, span, key)

接下来,它检查当前字符uc是否为精确空格.如果是,它将重置开始为i 1,其中i是当前字符的索引.

if uc == ' ':

doc.c[doc.length - 1].spacy = True

start = i + 1

如果字符不是空格,则将start设置为当前字符的索引.然后,它反转in_ws,表示它是一个字符.

else:

start = i

in_ws = not in_ws

然后它增加i = 1并循环到下一个字符.

i += 1

TL; DR

综上所述,它使用i跟踪字符串中的字符,并使用start保持单词的开头.在一个单词的处理结束时,将start重置为当前字符,然后在空格之后将其设置为最后一个空格加一个(下一个单词的开头).

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值