所以我正在尝试编写一个perl脚本来读取一个用Latin-1编码的文件.由于某种原因,这只是没有成功.当我尝试简单搜索我知道的文件中的字符时(它在第一行),没有任何显示.我正在使用编码"iso 8859-1"; 下面,但我也尝试过binmode(STDIN,":utf8"); .关于我可能做错了什么以及如何做对的任何建议?
use encoding "iso 8859-1";
while(<>)
{
if(/ó/gi)
{
print "Found one!\n";
}
}
Run Code Online (Sandbox Code Playgroud) 下面的代码(计算余弦相似度),在我的计算机上重复运行时,将输出1.0,0.9999999999999998或1.0000000000000002.当我取出normalize函数时,它只返回1.0.我认为浮点运算应该是确定性的.如果每次在同一台计算机上对相同的数据应用相同的操作,我的程序会导致什么?是否可能与堆栈中的哪个位置调用normalize函数有关?我怎么能阻止这个?
#! /usr/bin/env python3
import math
def normalize(vector):
sum = 0
for key in vector.keys():
sum += vector[key]**2
sum = math.sqrt(sum)
for key in vector.keys():
vector[key] = vector[key]/sum
return vector
dict1 = normalize({"a":3, "b":4, "c":42})
dict2 = dict1
n_grams = list(list(dict1.keys()) + list(dict2.keys()))
numerator = 0
denom1 = 0
denom2 = 0
for n_gram in n_grams:
numerator += dict1[n_gram] * dict2[n_gram]
denom1 += dict1[n_gram]**2
denom2 += dict2[n_gram]**2
print(numerator/(math.sqrt(denom1)*math.sqrt(denom2)))
Run Code Online (Sandbox Code Playgroud)