# 提取整个文本中全部或结尾的标识符(除英文,字母和汉字)
# 提取整个文本中全部或结尾的标识符(除英文,字母和汉字)
import numpy as np
import re
path = r'D:\NMT_Code\nematus-local-attention\data\iwslt_UN_zh-en\train'
en_path = path + r'\train.zh-en.en.3'
zh_path = path + r'\train.zh-en.zh.3'
en_eos_tokens = []
zh_eos_tokens = []
en_all_tokens = []
zh_all_tokens = []
#把正则表达式编译成对象,如果经常使用该对象,此种方式可提高一定效率
# num_regex = re.compile(r'[0-9]')
# zimu_regex = re.compile(r'[a-zA-z]')
# hanzi_regex = re.compile(r'[\u4E00-\u9FA5]')
extract_regex = re.compile(r'[0-9a-zA-z\u4E00-\u9FA5]')
with open(en_path, encoding='utf-8') as en, open(zh_path, encoding='utf-8') as zh:
for en_line in en.readlines():
zh_line = zh.readline()
# 获得中-英句子,各自最后的一个标识符
# en_eos_token = en_line.strip().split(' ')[-1]
# zh_eos_token = zh_line.strip().split(' ')[-1]
# 英文最后一个标识符不为字母或汉字,数字
# if not extract_regex.findall(en_eos_token):
# en_eos_tokens.append(en_eos_token)
#
# # 中文最后一个标识符不为汉字或字母
# if not extract_regex.findall(zh_eos_token):
# zh_eos_tokens.append(zh_eos_token)
# 获得中英句子, 各自的全部标识符
en_all_token = en_line.strip().split(' ')
zh_all_token = zh_line.strip().split(' ')
# 英文最后一个标识符不为字母或汉字,数字
for en_token in en_all_token:
if not extract_regex.findall(en_token):
en_all_tokens.append(en_token)
# 中文最后一个标识符不为汉字或字母
for zh_token in zh_all_token:
if not extract_regex.findall(zh_token):
zh_all_tokens.append(zh_token)
# print('英文最后一个标识符:')
# print(set(en_eos_tokens))
# print('中文最后一个标识符:')
# print(set(zh_eos_tokens))
print('英文全部标识符:')
print(set(en_all_tokens))
print('中文全部标识符:')
print(set(zh_all_tokens))