自己动手建设网站过程,有没有免费的网站软件,专门做网络推广的公司,网络运营商电话Edit Distance计算两个字符串之间#xff0c;由一个转成另一个所需要的最少编辑次数#xff0c;次数越多#xff0c;距离越大#xff0c;也就越不相关。比如#xff0c;“xiaoming”和“xiamin”#xff0c;两者的转换需要两步#xff1a;去除‘o’去除‘g’所以#x…Edit Distance计算两个字符串之间由一个转成另一个所需要的最少编辑次数次数越多距离越大也就越不相关。比如“xiaoming”和“xiamin”两者的转换需要两步去除‘o’去除‘g’所以次数/距离2。!pip install distanceimport distancedef edit_distance(s1, s2):return distance.levenshtein(s1, s2)s1 xiaomings2 xiaminprint(距离str(edit_distance(s1, s2)))杰卡德系数用于比较有限样本集之间的相似性与差异性。Jaccard 系数值越大样本相似度越高计算方式是两个样本的交集除以并集。from sklearn.feature_extraction.text import CountVectorizerimport numpy as npdef jaccard_similarity(s1, s2):def add_space(s):return .join(list(s))# 将字中间加入空格s1, s2 add_space(s1), add_space(s2)# 转化为TF矩阵cv CountVectorizer(tokenizerlambda s: s.split())corpus [s1, s2]vectors cv.fit_transform(corpus).toarray()# 求交集numerator np.sum(np.min(vectors, axis0))# 求并集denominator np.sum(np.max(vectors, axis0))# 计算杰卡德系数return 1.0 * numerator / denominators1 你在干啥呢s2 你在干什么呢print(jaccard_similarity(s1, s2))TF 计算计算矩阵中两个向量的相似度即求解两个向量夹角的余弦值。计算公式cosθa·b/|a|*|b|from sklearn.feature_extraction.text import CountVectorizerimport numpy as npfrom scipy.linalg import normdef tf_similarity(s1, s2):def add_space(s):return .join(list(s))# 将字中间加入空格s1, s2 add_space(s1), add_space(s2)# 转化为TF矩阵cv CountVectorizer(tokenizerlambda s: s.split())corpus [s1, s2]vectors cv.fit_transform(corpus).toarray()# 计算TF系数return np.dot(vectors[0], vectors[1]) / (norm(vectors[0]) * norm(vectors[1]))s1 你在干啥呢s2 你在干什么呢print(tf_similarity(s1, s2))高阶模型BertBert的内部结构请查看从word2vec到bert这篇文章本篇文章我们只讲代码实现。我们可以下载Bert模型源码或者使用TF-HUB的方式使用本次我们使用下载源码的方式。首先从Github下载源码然后下载google预训练好的模型我们选择Bert-base Chinese。预模型下载后解压文件结构如图vocab.txt是训练时中文文本采用的字典bert_config.json是BERT在训练时可选调整的一些参数。其它文件是模型结构参数等文件。准备数据集修改 processorclass MoveProcessor(DataProcessor):Processor for the move data set .def get_train_examples(self, data_dir):See base class.return self._create_examples(self._read_tsv(os.path.join(data_dir, train.tsv)), train)def get_dev_examples(self, data_dir):See base class.return self._create_examples(self._read_tsv(os.path.join(data_dir, dev.tsv)), dev)def get_test_examples(self, data_dir):See base class.return self._create_examples(self._read_tsv(os.path.join(data_dir, test.tsv)), test)def get_labels(self):See base class.return [0, 1]classmethoddef _read_tsv(cls, input_file, quotecharNone):Reads a tab separated value file.with tf.gfile.Open(input_file, r) as f:reader csv.reader(f, delimiter\t, quotecharquotechar)lines []for line in reader:lines.append(line)return linesdef _create_examples(self, lines, set_type):Creates examples for the training and dev sets.examples []for (i, line) in enumerate(lines):guid %s-%s % (set_type, i)if set_type test:text_a tokenization.convert_to_unicode(line[0])label 0else:text_a tokenization.convert_to_unicode(line[1])label tokenization.convert_to_unicode(line[0])examples.append(InputExample(guidguid, text_atext_a, text_bNone, labellabel))return examples修改 processor字典def main(_):tf.logging.set_verbosity(tf.logging.INFO)processors {cola: ColaProcessor,mnli: MnliProcessor,mrpc: MrpcProcessor,xnli: XnliProcessor,setest:MoveProcessor}Bert模型训练export BERT_BASE_DIR/Users/xiaomingtai/Downloads/chinese_L-12_H-768_A-12export MY_DATASET/Users/xiaomingtai/Downloads/bert_modelpython run_classifier.py \--data_dir$MY_DATASET \--task_namesetest \--vocab_file$BERT_BASE_DIR/vocab.txt \--bert_config_file$BERT_BASE_DIR/bert_config.json \--output_dir/Users/xiaomingtai/Downloads/ber_model_output/ \--do_traintrue \--do_evaltrue \--do_predicttrue\--init_checkpoint$BERT_BASE_DIR/bert_model.ckpt \--max_seq_length128 \--train_batch_size16 \--eval_batch_size8\--predict_batch_size2\--learning_rate5e-5\--num_train_epochs3.0\Bert模型训练结果