HTML 的实体编码(HTML Entity Encode)

MDN:HTML 实体是一段以连字号(&)开头、以分号(;)结尾的文本(字符串)。实体常常用于显示保留字符(这些字符会被解析为 HTML 代码)和不可见的字符(如“不换行空格”)。你也可以用实体来代替其他难以用标准键盘键入的字符。

  • 不可分的空格: 
  • <(小于符号):&lt;
  • >(大于符号):&gt;
  • &(与符号):&amp;
  • (双引号):&quot;
  • '(单引号):'&apos;
  • ©(版权符号)&copy;

以上列出的一些实体比较容易记忆,但有一些不容易记住的您可以查看 whatwg 或使用解码工具

HTML 实体是一段以连字符号(&)开头、以分号(;)结尾的字符串。用以显示不可见字符及保留字符(如 HTML 标签)

在前端,一般为了避免 XSS 攻击,会将 <> 编码为 &lt;&gt;,这些就是 HTML 实体编码。

在 HTML 转义时,仅仅只需要对六个字符进行编码:&<>"' 和 `。我们可以使用 he 库进行编码及转义。

// 实体编码
he.encode('<img src=""></img>') // "&#x3C;img src=&#x22;&#x22;&#x3E;&#x3C;/img&#x3E;"

// 转义
he.escape('<img src=""></img>') // "&lt;img src=&quot;&quot;&gt;&lt;/img&gt;"
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
下面是一个简单的BERT实体关系联合抽取的Python代码示例: ```python import torch import transformers import numpy as np # 加载预训练的BERT模型和分词器 tokenizer = transformers.BertTokenizer.from_pretrained('bert-base-uncased') model = transformers.BertForSequenceClassification.from_pretrained('bert-base-uncased', num_labels=2) # 定义实体关系类别 labels = ['NO_RELATIONSHIP', 'RELATIONSHIP'] # 定义样本句子和实体位置 text = "The company Apple was founded by Steve Jobs and Steve Wozniak." entity1 = (4, 9, 'Apple') entity2 = (32, 42, 'Steve Jobs') # 对样本进行分词和编码 encoded_dict = tokenizer.encode_plus( text, text_pair=None, add_special_tokens=True, truncation_strategy='longest_first', max_length=128, padding='max_length', return_attention_mask=True, return_tensors='pt' ) # 获取实体位置的相对编码位置 entity1_start = np.where(encoded_dict['input_ids'] == tokenizer.encode(entity1[2], add_special_tokens=False)[0])[0][0] entity1_end = entity1_start + len(tokenizer.encode(entity1[2], add_special_tokens=False)) - 1 entity2_start = np.where(encoded_dict['input_ids'] == tokenizer.encode(entity2[2], add_special_tokens=False)[0])[0][0] entity2_end = entity2_start + len(tokenizer.encode(entity2[2], add_special_tokens=False)) - 1 # 构造输入张量 input_ids = encoded_dict['input_ids'] attention_mask = encoded_dict['attention_mask'] token_type_ids = encoded_dict['token_type_ids'] entity1_mask = [0] * len(input_ids) for i in range(entity1_start, entity1_end + 1): entity1_mask[i] = 1 entity2_mask = [0] * len(input_ids) for i in range(entity2_start, entity2_end + 1): entity2_mask[i] = 1 # 转换为PyTorch张量 input_ids = torch.tensor(input_ids).unsqueeze(0) attention_mask = torch.tensor(attention_mask).unsqueeze(0) token_type_ids = torch.tensor(token_type_ids).unsqueeze(0) entity1_mask = torch.tensor(entity1_mask).unsqueeze(0) entity2_mask = torch.tensor(entity2_mask).unsqueeze(0) # 前向传播 outputs = model( input_ids=input_ids, attention_mask=attention_mask, token_type_ids=token_type_ids, labels=None, entity1_mask=entity1_mask, entity2_mask=entity2_mask ) # 预测实体关系类别 logits = outputs[0] _, predicted = torch.max(logits, 1) relationship = labels[predicted.item()] print("实体1:", entity1[2]) print("实体2:", entity2[2]) print("实体关系:", relationship) ``` 需要注意的是,上述代码仅供参考,具体实现可能因数据集、模型和任务不同而有所变化。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值