日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

P-SIF长文本表示方法

發布時間:2023/12/10 编程问答 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 P-SIF长文本表示方法 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

目錄

一、論文的核心思想

二、文檔向量(長文本表示)形成具體步驟

三、中文數據集代碼實戰

1、增量訓練詞向量

2、生成單詞的主題詞向量

3、文檔向量計算

四、下游任務


? ? ? ? ? 目前處理長文本任務有兩種方案,一種是基于關鍵詞抽取的表示方案,它抽取一定數量的關鍵詞,用這些關鍵詞的含義來表示整個文本的含義,然后基于關鍵詞來做分類和文本相似任務。這里會存在積累誤差,抽取關鍵詞的階段往往我們抽取的關鍵詞的準確率很難保證,因為關鍵詞抽取對于人來說都是一個比較困難的任務。第二個方案就是基于bert系列的。由于bert系列對于文本長度有很大的限制,一般要求是不多余512字。在bert的基礎上提出各種tricks——對文本數據做下采樣——每次去除一條文本數據的部分數據——具體如何取滑窗呀,首句,中間句,尾句等。這兩種方案在一定的業務場景下效果是很差的,最近看了一篇有關長文本向量表示的論文,里面的方案感覺是一個比較不錯的方案,論文提供了算法原理和完整的實驗代碼。我將其在中文數據集上,做了一些實驗,做一個記錄和分享。論文原文地址P-SIF: Document Embeddings Using Partition Averaging

一、論文的核心思想

? ? ? ? 回顧一下一般句向量的表示方法——簡單的詞向量加權平均可以很好的表示一個句向量,在很多任務下,比復雜的seqtoseq神經網絡的效果都要好。在長文本或者文檔級別的業務場景下,很自然的就會把上面的加權平均的算法移植過來,但是實驗證明它的效果會大大下降。關鍵的原因是,長文本或者文檔中不同的句子可能主題是不一樣的,因此它們中的詞的主題也是不同的,簡單的直接加權平均來表示文檔向量,就會把主題這個關鍵信息忽略掉。為了解決上面的問題,論文提出了一種新的方法P-SIF——分區的詞平均模型。它保留了詞向量據平局加權的簡單性,也考慮了文檔的主題結構。它能夠學習到特定的主題向量,然后把這些向量鏈接起來,最終形成一個文檔向量。

以上圖片來自論文截圖,相同的詞在不同的空間中具有不同的主題,含義也就不一樣。所以基于這一點出發要很好的表示一個文檔,就需要考慮不同的主題。

其實這里的論文中核心思想就是把文檔中的詞進行聚類,劃分到不同的主題空間中,然后使用這些詞在主題空間中的概率與詞向量自身做運算,然后concat起來,就得到了文檔向量。它就可以用在下游任務中了,在長文本上具有一定的提升,相對于其他的一些方法。

二、文檔向量(長文本表示)形成具體步驟

1、清洗語料,分詞,訓練詞向量,得到每個詞的類似word2vec詞向量。

2、基于以上的詞向量,進行GMM(高斯)聚類,得到每個詞的聚類結果——每個詞的主題類別和概率,id和idx_prob。

3、基于1中的詞向量,2中的聚類結果,以及語料中的每個詞的TFIDF得分,三者做乘法運算,得到每個單詞的主題向量表示——topic_vector。

4、文檔向量計算,a、針對語料中的詞頻,設計一個權重算法得出每個詞的權重。

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?b、基于上述的topic_vector與a中的權重相乘,然后把每個詞的詞向量直接相加,就得到文本的初始主題向量。

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? c、做歸一化處理。假如聚類數目太多,后續還有需要進行降維處理,例如PCA——主成分分析法。

以上就是P-SIF算法文檔向量的形成,后面就可以使用這個文檔向量進行下有任務了。論文中給出的一些數據集中的文本相似和文本分類效果提升很明顯,同時又是無監督的,具有一定的意義。

三、中文數據集代碼實戰

1、增量訓練詞向量

這里直接使用gensim包中的Word2Vec來進行增量或者全量訓練詞向量,自己選擇就好!

from gensim.models import Word2Vec import os import json from tqdm import tqdm import pandas as pd from gensim.models.word2vec import PathLineSentences import timedef train_word2vec_model(path):model = Word2Vec.load('pretrain_model/word2vec/word2vec.model')print('pre model:', model)#訓練詞向量new_model = trainning_word2vec(path,model)print('new_model',new_model)model_save_path = os.path.join('dataset_word2vec_model','update','word2vec.model')new_model.save(model_save_path)new_wv_words = new_model.wv.index2wordprint('len(new_wv_words)', len(new_wv_words))def trainning_word2vec(path,model):"""增量訓練詞向量,數據集比較大,所以需要用到PathLineSentences()這種方法,當然還有其他的:param path::param model::return:"""t1 = time.time()sentence_path = os.path.join(path, 'sentence_cut')model.build_vocab(PathLineSentences(sentence_path),update=True) #注意update = True 這個參數很重要model.train(PathLineSentences(sentence_path),total_examples=model.corpus_count,epochs=50)t2 = time.time()print('tainning word2vec_update %.4f seconds'%(t2-t1))return modelif __name__ == '__main__':print('開始訓練word2vec!')path = 'data_set'train_word2vec_model(path)print('訓練word2vec完成!')

2、生成單詞的主題詞向量

這里使用到了GMM高斯聚類算法,同時也要計算語料中的詞頻。這里的難點是怎么選取一個合適的聚類數目,應該有一定的定量的評定標準,這里我沒有做詳細的研究,代碼里也沒有去評估。

import os import json import numpy as np from tqdm import tqdm from sklearn.mixture import GaussianMixture import pandas as pd import time import pickle from sklearn.feature_extraction.text import TfidfVectorizer,CountVectorizer """ 根據聚類數目、詞頻和word2vec向量構造了每個詞的主題向量 """num_features = 100 def create_word_topic_vectors():"""讀取聚類結果、和數據文本,形成主題詞向量:return:"""print('create_word_topic_vectors begin!')topic_vector_save_dir = 'topic_vector'sentence_cut_save_dir = 'data_set/sentence_cut'word_idf_dict = get_tfidf_features(sentence_cut_save_dir)n_clusters = [5,10,15,20,25,30]model_json_path = os.path.join('task_word_vector','model.json')model_wv_index2word_txt_path = os.path.join('task_word_vector', 'model_wv_index2word.txt')word_vectors_npy_path = os.path.join('task_word_vector', 'word_vectors.npy')t1 = time.time()model = json.load(open(model_json_path,'r'))t2 = time.time()print('load model.json %.4f' % (t2 - t1))t1 = time.time()word_vectors = np.load(word_vectors_npy_path,allow_pickle=True)t2 =time.time()print('load word_vectors.npy %.4f'%(t2-t1))model_wv_index2word = []with open(model_wv_index2word_txt_path, 'r') as f:lines = f.readlines()for line in tqdm(lines):model_wv_index2word.append(line.strip('\n'))# cluster_result = cluster_GaussianMixture_cluster(model,n_clusters,model_wv_index2word,word_vectors,cluster_result_save_dir,word_idf_dict,topic_vector_save_dir)load_word_vecotr_cluster_result(model,model_wv_index2word,word_idf_dict,topic_vector_save_dir)# get_word_topic_vectors(model,model_wv_index2word,cluster_result,word_idf_dict,topic_vector_save_dir)print('create_word_topic_vectors finished!')def get_tfidf_features(sentence_cut_save_task_path):""":param sentence_cut_save_task_path::return:"""sentences_gen = get_sentence(sentence_cut_save_task_path)corpus = []for sentences in sentences_gen:for sentence in sentences:corpus.append(sentence)print('len(corpus)',len(corpus))# t1 = time.time()# 這個統計和我自己實現的有差別# cv = CountVectorizer()# cv_fit = cv.fit_transform(corpus)## word_counts = cv.vocabulary_### word_counts = dict(sorted(word_counts.items(),key=lambda x:x[1],reverse=True))## with open('task_word_vector/word_counts.txt','w') as f:# for k,v in word_counts.items():# s = k +" " + str(v)# f.write(s+'\n')## t2 = time.time()# print('統計詞頻時間 %.4f s' % (t2 - t1))t1 = time.time()#這個沒有太看明白,要去看看理論tfv = TfidfVectorizer(strip_accents='unicode',dtype=np.float32)tfv.fit_transform(corpus)features = tfv.get_feature_names()idfs = tfv._tfidf.idf_ #這個API真的是沒有用過呀word_idf_dict = {}for feature,idf in zip(features,idfs):word_idf_dict[feature] = idft2 = time.time()# with open('task_word_vector/word_idf_dict.txt','w') as f:# for k ,v in word_idf_dict.items():# s = k + " " + str(v)# f.write(s+'\n')print('get_tfidf_features %.4f s'%(t2-t1))return word_idf_dictdef get_sentence(path):"""內存太大了,電腦裝不下,換用生成器試試:param path::return:"""files = os.listdir(path)sentence = []for file in files:file_path = os.path.join(path, file)with open(file_path, 'r') as f:for line in tqdm(f, desc='read sentence_cuts'):line = line.strip()sentence.append(line)if len(sentence) >= 500:yield sentencesentence = []def get_word_topic_vectors(model,model_wv_index2word,cluster_result,word_idf_dict,path):""":param model::param model_wv_index2word::param cluster_result::param word_idf_dict::param path::return:"""num_features = 100if not os.path.exists(path):print('create path:', path)os.makedirs(path)for dic in tqdm(cluster_result,desc='clusters word_topic_vectors computing'):prob_wordvecs = {}dic_word = dic['word']dic_prob = dic['proba']word_map_prob = dict(zip(dic_word,dic_prob))n_cluster = int(dic['n_cluster'])for word in tqdm(model_wv_index2word,desc='computing'):prob_wordvecs[word] = np.zeros(n_cluster * num_features, dtype="float32")for index in range(0,n_cluster):try:prob_wordvecs[word][index * num_features:(index+1)*num_features] = np.array(model[word]) * word_map_prob[word][index] * word_idf_dict[word]except Exception:continues = str(n_cluster)+'_cluster_topic_vectors.pkl'save_path = os.path.join(path,s)pickle.dump(prob_wordvecs,open(save_path,'wb'))def load_word_vecotr_cluster_result(model,model_wv_index2word,word_idf_dict,topic_vector_save_dir):num_features = 100files = os.listdir('word_vecotr_cluster_result')for file in tqdm(files,desc='load_word_vecotr_cluster_result and clusters word_topic_vectors computing'):#讀取聚類向量結果cluster_dic = {}file_path = os.path.join('word_vecotr_cluster_result',file)df = pd.read_csv(file_path)words = df['word']cluster_id = df['cluster_id']cluster_proba = list(df['cluster_proba'])idx_proba_float = []for ele in cluster_proba:ele = [float(e) for e in ele.strip('[').strip(']').split(',')]idx_proba_float.append(ele)cluster = file.split('_')[0]cluster_dic['n_cluster'] = clustercluster_dic['word'] = wordscluster_dic['idx'] = cluster_idcluster_dic['proba'] = idx_proba_float#computing topic vectorsdic_word = cluster_dic['word']dic_prob = cluster_dic['proba']word_map_prob = dict(zip(dic_word, dic_prob))n_cluster = int(cluster_dic['n_cluster'])s = str(n_cluster) + '_cluster_topic_vectors.json'save_path = os.path.join(topic_vector_save_dir, s)with open(save_path,'w') as f:for word in tqdm(model_wv_index2word, desc='computing'):prob_wordvecs = {}prob_wordvecs[word] = np.zeros(n_cluster * num_features, dtype="float32")for index in range(0, n_cluster):try:prob_wordvecs[word][index * num_features:(index + 1) * num_features] = np.array(model[word]) * \word_map_prob[word][index] * \word_idf_dict[word]except Exception:continueprob_wordvecs[word] = prob_wordvecs[word].tolist()f.write(json.dumps(prob_wordvecs,ensure_ascii=False))f.write('\n')# pickle.dump(prob_wordvecs, open(save_path, 'wb'))def cluster_GaussianMixture_cluster(model,n_clusters,model_wv_index2word,word_vectors,cluster_result_save_dir,word_idf_dict,topic_vector_save_dir):""":param model: 詞向量模型:param n_clusters: 聚類數目列表:param model_wv_index2word: 詞向量中的詞:param word_vectors: 詞向量:param cluster_result_save_dir: 聚類保存文件路徑:param word_idf_dict: tfidf評分:param topic_vector_save_dir: 主題向量保存路徑:return:"""cluster_result = []for n_cluster in n_clusters:cluster_dic = {}print('clustering begin!')t1 = time.time()clf = GaussianMixture(n_components=n_cluster,covariance_type='tied',init_params='kmeans',max_iter=50)idx = clf.fit_predict(word_vectors)idx_proba = clf.predict_proba(word_vectors)t2 = time.time()print('clustering finished!')print('times %.4f'%(t2-t1))s = str(n_cluster)+'_cluster_GaussianMixture.csv'save_path = os.path.join(cluster_result_save_dir,s)df = pd.DataFrame()df['word'] = model_wv_index2worddf['cluster_id'] = idxdf['cluster_proba'] = idx_proba.tolist()df.to_csv(save_path,index=False)cluster_dic['n_cluster'] = n_clustercluster_dic['word'] = model_wv_index2wordcluster_dic['idx'] = idxcluster_dic['proba'] = idx_probacluster_result.append(cluster_dic)# computing topic vectorsdic_word = cluster_dic['word']dic_prob = cluster_dic['proba']word_map_prob = dict(zip(dic_word, dic_prob))n_cluster = int(cluster_dic['n_cluster'])s = str(n_cluster) + '_cluster_topic_vectors.json'save_path = os.path.join(topic_vector_save_dir, s)with open(save_path, 'w') as f:for word in tqdm(model_wv_index2word, desc='computing'):prob_wordvecs = {}prob_wordvecs[word] = np.zeros(n_cluster * num_features, dtype="float32")for index in range(0, n_cluster):try:print('np.array(model[word])', np.array(model[word]))print('word_map_prob[word][index]', word_map_prob[word][index])print('word_idf_dict[word]', word_idf_dict[word])prob_wordvecs[word][index * num_features:(index + 1) * num_features] = np.array(model[word]) * \word_map_prob[word][index] * \word_idf_dict[word]except Exception:continueprint('prob_wordvecs[word]', prob_wordvecs[word])prob_wordvecs[word] = prob_wordvecs[word].tolist()print('prob_wordvecs[word]', prob_wordvecs[word])time.sleep(500)f.write(json.dumps(prob_wordvecs, ensure_ascii=False))f.write('\n')return cluster_resultif __name__ == '__main__':create_word_topic_vectors()

3、文檔向量計算

首先需要設計一個權重算法,來衡量每個詞在語料中的一個權重。論文作者如下設計:

def bulding_word_frequency_and_weight(words_gen):"""統計詞頻信息,得到詞的權重:param senteces_res: 每一個任務的數據集:return:"""print('bulding_word_frequency_and_weight begin!')weight_dict = Counter(words_gen)total = 0for v in weight_dict.values():total += va_weight = 0.1 #這個值可以調整for word in tqdm(weight_dict,desc='get word weight'):prob = weight_dict[word]*1.0/totalweight_dict[word] = a_weight*1.0/(a_weight*1.0+prob)print('bulding_word_frequency_and_weight finished!')return weight_dict

基于上述權重和前文提到的主題詞向量,做乘法運算后,然后把每個詞向量直接加起來,就可以得到文檔主題向量表示:

import os import json from sklearn.externals import joblib from tqdm import tqdm import numpy as np from collections import Counter import pandas as pd import time import gc #garbage collector)n_featurs = 100 def load_topic_vector():"""加載topic_vector:return: topic_vector_res {‘jieba’:dic,}dic = {'iflytek_public':subdic,}subdic = {'10':vecots,}vecots為單詞的主題向量"""topic_vector_dir = 'topic_vector'dirs = os.listdir(topic_vector_dir)topic_vector_res = {}for dir in tqdm(dirs,desc='load topic vectors'):clusters_pkl_file_path = os.path.join(topic_vector_dir,dir)#topic_vector/jieba/iflytek_public/10_cluster_topic_vectors.pklcluster_topic_vectors = joblib.load(clusters_pkl_file_path)cluster = dir.split('_')[0]topic_vector_res[cluster] = cluster_topic_vectorsreturn topic_vector_resdef get_sentence():""""""path = 'data_set/sentence_cut/patent_collegesentence_cuts.txt'all_sentences = []count = 0 #只取10W條with open(path,'r') as f:try:for line in tqdm(f):line = line.strip().split(' ')all_sentences.append(line)count += 1if count >= 100000:breakexcept Exception:print(Exception)print('only extract 10w sentences')return all_sentencesdef get_document_vectors():"""獲取文檔向量,給文檔進行向量化:return:"""docment_vectors_dir = 'docment_vectors'#文檔向量保存路徑words_gen = get_sentence_words('data_set/sentence_cut')weight_dict = bulding_word_frequency_and_weight(words_gen) # 得到詞頻和權重all_sentences = get_sentence()load_topic_vector_and_compute_vectors(all_sentences,weight_dict,docment_vectors_dir)# for k,v in topic_vector_res.items():# n_cluster = k# topic_vectors = v## docment_vectors_cluster_save_path = os.path.join(docment_vectors_dir, n_cluster)# compute_doucment_vector(all_sentences,topic_vectors,n_cluster,docment_vectors_cluster_save_path,weight_dict)def get_sentence_words(path):files = os.listdir(path)for file in files:file_path = os.path.join(path, file)with open(file_path, 'r') as f:for line in tqdm(f, desc='read sentence_cuts'):line = line.strip().split(' ')for word in line:yield worddef load_topic_vector_and_compute_vectors(all_sentences,weight_dict,docment_vectors_dir):topic_vector_dir = 'topic_vector'files = os.listdir(topic_vector_dir)for file in tqdm(files, desc='load topic vectors and compute doucment_vector'):if file != '25_cluster_topic_vectors.json' or file != '30_cluster_topic_vectors.json':cluster = file.split('_')[0]clusters_json_file_path = os.path.join(topic_vector_dir,file)cluster_topic_vector = load_topic_vector_from_json(clusters_json_file_path)docment_vectors_cluster_save_path = os.path.join(docment_vectors_dir, str(cluster))compute_doucment_vector(all_sentences,cluster_topic_vector,cluster,docment_vectors_cluster_save_path,weight_dict)del cluster_topic_vectorgc.collect()def load_topic_vector_from_json(clusters_json_file_path):topic_vector_dic = {}with open(clusters_json_file_path,'r') as f:for line in tqdm(f,desc='load_topic_vector_from_json'):temp_dic = json.loads(line)for k,v in temp_dic.items():topic_vector_dic[k] = np.array(v)return topic_vector_dicdef compute_doucment_vector(all_sentences,topic_vectors,n_cluster,docment_vectors_cluster_save_path,weight_dict):if not os.path.exists(docment_vectors_cluster_save_path):print('create ',docment_vectors_cluster_save_path)os.makedirs(docment_vectors_cluster_save_path)docment_vectors_npy_save_path = os.path.join(docment_vectors_cluster_save_path,'document_vectors.npy')doucment_vectors = computing_doucment_vectors(all_sentences, topic_vectors, weight_dict,n_cluster) # datas是單個json文件全部文本的單詞np.save(docment_vectors_npy_save_path, doucment_vectors)del doucment_vectorsgc.collect()def bulding_word_frequency_and_weight(words_gen):"""統計詞頻信息,得到詞的權重:param senteces_res: 每一個任務的數據集:return:"""print('bulding_word_frequency_and_weight begin!')weight_dict = Counter(words_gen)total = 0for v in weight_dict.values():total += va_weight = 0.1 #這個值可以調整for word in tqdm(weight_dict,desc='get word weight'):prob = weight_dict[word]*1.0/totalweight_dict[word] = a_weight*1.0/(a_weight*1.0+prob)print('bulding_word_frequency_and_weight finished!')return weight_dictdef computing_doucment_vectors(all_sentences,topic_vectors,weight_dict,n_cluster):""":param res_all_words_A_content::param res_all_words_R_content::param topic_vectors::param weight_dict::param n_cluster::return: A_content_doucment_vectors,R_content_doucment_vectors"""n_cluster = int(n_cluster)doucment_vectors = []for words in tqdm(all_sentences,desc='computing_doucment_vectors'):sentence_vector = np.zeros(n_cluster * n_featurs, dtype='float32')for word in words:try:sentence_vector += topic_vectors[word] * weight_dict[word]except Exception:passnorm = np.sqrt(np.einsum('...i,...i', sentence_vector, sentence_vector))if norm != 0:sentence_vector /= normdoucment_vectors.append(sentence_vector)doucment_vectors = np.array(doucment_vectors)print('doucment_vectors comupting finished!')return doucment_vectorsif __name__ == '__main__':print('Begin')get_document_vectors()print('Finish')

四、下游任務

在iflytek_public長文本數據集,使用P-SIF方法做了文本分類和相似任務。

""" 分類任務,得到了長文本的向量,直接采用機器學習算法來做,可以使用LIGHTGBM算法,另外一個可以嘗試神經網絡(優化)相似度任務, 找出每篇文檔最相似的10篇文檔后面的優化方向,word2vec的維度 """ import os import json import numpy as np from lightgbm import LGBMClassifier from sklearn.metrics import f1_score,precision_score,accuracy_score,recall_score import time from DataSet import MyDataset from torch.utils.data import DataLoader from classfication_model import MyClassificationModel import torch from torch.optim.lr_scheduler import ReduceLROnPlateau,StepLR import torch.nn.functional as F from tqdm import tqdm import pandas as pd import scipy.spatial import csv import random def classfification_task():result_dir = 'downstream_task_result/classification_result'label_dict = get_labels()docment_vectors = load_docment_vectors()for tool_k,tool_v in docment_vectors.items():result_tool_path = os.path.join(result_dir,tool_k)for task_k,task_v in tool_v.items():result_tasl_path = os.path.join(result_tool_path, task_k)for cluster_k,cluster_v in task_v.items():result_cluster_path = os.path.join(result_tasl_path, cluster_k)if not os.path.exists(result_cluster_path):print('create ',result_cluster_path)os.makedirs(result_cluster_path)dev_vectors = Nonedev_labels = Nonetrain_vectors = Nonetrain_labels = Nonetest_vectors = Noneprint('cluster_k',cluster_k)for name,vectors in cluster_v.items():if name == 'dev':dev_vectors = vectorsdev_labels = label_dict[name]elif name == 'train':train_vectors = vectorstrain_labels = label_dict[name]else:test_vectors = vectors# do_classificating_use_LGBMClassifier(train_vectors,train_labels,dev_vectors,dev_labels,test_vectors)model = MyClassificationModel(n_cluster=int(cluster_k),n_feature=100)do_classificating_MyClassificationModel(model,train_vectors,train_labels,dev_vectors,dev_labels,test_vectors,result_cluster_path)def do_classificating_MyClassificationModel(model,train_vectors,train_labels,dev_vectors,dev_labels,test_vectors,result_cluster_path):batch_size = 128train_data = MyDataset(train_vectors,train_labels)dev_data = MyDataset(dev_vectors,dev_labels)test_data = MyDataset(test_vectors)train_iter = DataLoader(dataset=train_data, batch_size=batch_size, shuffle=True)dev_iter = DataLoader(dataset=dev_data, batch_size=batch_size, shuffle=True)test_iter = DataLoader(dataset=test_data, batch_size=batch_size, shuffle=True)train(train_iter,dev_iter,model,result_cluster_path)best_model_path = os.path.join(result_cluster_path,'MyClassificationModel.pkl')model = torch.load(best_model_path)predict(test_iter,model,result_cluster_path)def train(train_iter,dev_iter,model,result_cluster_path):train_accs = []dev_accs = []model.to('cuda')# 初始學習率optimizer_params = {'lr': 1e-3, 'eps': 1e-8}optimizer = torch.optim.Adam(model.parameters(), **optimizer_params)scheduler = ReduceLROnPlateau(optimizer, mode='max', factor=0.8, min_lr=1e-7, patience=5, verbose=True,eps=1e-8) # mode max表示當監控量停止上升時,學習率將減小;min表示當監控量停止下降時,學習率將減小;這里監控的是loss因此應該用minearly_stop_step = 1000epochs = 200last_improve = 0 # 記錄上次提升的stepflag = False # 記錄是否很久沒有效果提升dev_best_acc = 0correct = 0total = 0global_step = 0for epoch in range(epochs):for step, batch in tqdm(enumerate(train_iter), desc='Train iteration:'):global_step += 1optimizer.zero_grad()batch = tuple(t.to('cuda') for t in batch)input = batch[0]# print('train input.size', input.size())# print('train input',input)label = batch[1]# print('train label.size', label.size())# print('train label',label)model.train()output = model(input)loss = F.cross_entropy(output, label)loss.backward()optimizer.step()total += label.size(0)_, predict = torch.max(output, 1)correct += (predict == label).sum().item()train_acc = correct / totalif (step + 1) % 5 == 0:print('Train Epoch[{}/{}],step[{}/{}],tra_acc{:.6f} %,loss:{:.6f}'.format(epoch, epochs, step,len(train_iter),train_acc * 100, loss.item()))if (step) % 20 == 0:dev_acc, dev_loss = dev(model, dev_iter)if dev_best_acc < dev_acc:dev_best_acc = dev_accpath = os.path.join(result_cluster_path,'MyClassificationModel.pkl')torch.save(model, path)last_improve = global_steptrain_accs.append(train_acc)dev_accs.append(dev_best_acc)print("DEV Epoch[{}/{}],step[{}/{}],tra_acc{:.6f} %,dev_acc{:.6f} %,best_dev_acc{:.6f} %,train_loss:{:.6f},dev_loss:{:.6f}".format(epoch, epochs, step, len(train_iter), train_acc * 100, dev_acc * 100, dev_best_acc * 100,loss.item(), dev_loss.item()))if global_step - last_improve >= early_stop_step:print("No optimization for a long time, auto-stopping...")flag = Truebreakscheduler.step(dev_best_acc)if flag:breaktrain_result_path = os.path.join(result_cluster_path,'train_result.txt')with open(train_result_path,'w') as f:for train_acc,dev_acc in tqdm(list(zip(train_accs,dev_accs)),desc='save train process accurate'):s = 'train_acc:'+ str(train_acc)+" " +'dev_acc:'+ str(dev_acc)f.write(s+"\n")def dev(model,dev_iter):model.eval()loss_total = 0with torch.no_grad():correct = 0total = 0for step, batch in tqdm(enumerate(dev_iter), desc='dev iteration:'):batch = tuple(t.to('cuda') for t in batch)input = batch[0]label = batch[1]output = model(input)loss = F.cross_entropy(output, label)loss_total += losstotal += label.size(0)_, predict = torch.max(output, 1)correct += (predict == label).sum().item()res = correct / totalreturn res, loss_total / len(dev_iter)def predict(test_iter,model,result_cluster_path):result = []with torch.no_grad():for step, batch in tqdm(enumerate(test_iter), desc='predict iteration:'):batch = tuple(t.to('cuda') for t in batch)input = batch[0]output = model(input)_, predict = torch.max(output, 1)result.extend(predict.tolist())path = os.path.join(result_cluster_path,'predict_result.txt')df = pd.DataFrame()df['predict_label'] = resultdf.to_csv(path, index=False )return resultdef do_classificating_use_LGBMClassifier(train_vectors,train_labels,dev_vectors,dev_labels,test_vectors):print('do_classificating')t1 = time.time()clf = LGBMClassifier(random_state=2,n_jobs=3)clf.fit(train_vectors,train_labels)dev_pred = clf.predict(dev_vectors)f1 = f1_score(dev_labels, dev_pred, average='macro')pre = precision_score(dev_labels, dev_pred, average='micro')acc = accuracy_score(dev_labels, dev_pred)recall = recall_score(dev_labels, dev_pred, average='micro')t2 = time.time()print('train and devlization finished in %.4f seconds'%(t2-t1))print('LGBMClassifier f1:', f1)print('LGBMClassifier pre:', pre)print('LGBMClassifier recall:', recall)print('LGBMClassifier acc:', acc)print('classificating finished!')time.sleep(50)def load_docment_vectors():dir = 'docment_vectors'tool_dirs = os.listdir(dir)docment_vectors_res = {}for tool_dir in tool_dirs:tool_dir_path = os.path.join(dir,tool_dir)task_dirs = os.listdir(tool_dir_path)tool_dic ={}for task_dir in task_dirs:task_dic = {}if task_dir == 'iflytek_public':task_dir_path = os.path.join(tool_dir_path,task_dir)cluster_dirs = os.listdir(task_dir_path)for cluster_dir in cluster_dirs:cluster_dic = {}cluster_dir_path = os.path.join(task_dir_path,cluster_dir)npy_files = os.listdir(cluster_dir_path)for npy_file in npy_files:npy_file_name = npy_file.split('_')[0]npy_file_path = os.path.join(cluster_dir_path,npy_file)vectors = np.load(npy_file_path)cluster_dic[npy_file_name] = vectorstask_dic[cluster_dir] = cluster_dictool_dic[task_dir] = task_dicdocment_vectors_res[tool_dir] = tool_dicreturn docment_vectors_resdef get_labels():iflytek_public_dir = 'data_set/iflytek_public'files = os.listdir(iflytek_public_dir)label_dict = {}for file in files:if file != 'labels.json' and file != 'test.json':name = file.split('.')[0]labels = []file_path = os.path.join(iflytek_public_dir,file)with open(file_path,'r') as f:lines = f.readlines()for line in lines:dic = json.loads(line)label = int(dic['label'])labels.append(label)label_dict[name] = labelsreturn label_dictdef similarity_task():similaritytask_result = 'downstream_task_result/similaritytask_result'sentences = get_train_sentences()docment_vectors = load_docment_vectors()for tool_k, tool_v in docment_vectors.items():similaritytask_tool_save_path = os.path.join(similaritytask_result,tool_k)for task_k, task_v in tool_v.items():similaritytask_task_save_path = os.path.join(similaritytask_tool_save_path,task_k)for cluster_k, cluster_v in task_v.items():similaritytask_cluster_save_path = os.path.join(similaritytask_task_save_path,cluster_k)for name, vectors in cluster_v.items():if name == 'train':train_vector = vectorsdf = pd.DataFrame()df['text'] = sentencesdf['vector'] = train_vector.tolist()do_similaritying(df,similaritytask_cluster_save_path)def do_similaritying(df,similaritytask_cluster_save_path):if not os.path.exists(similaritytask_cluster_save_path):print('create similaritytask_cluster_save_path: ',similaritytask_cluster_save_path)os.makedirs(similaritytask_cluster_save_path)csv_save_path = os.path.join(similaritytask_cluster_save_path,'similarity.csv')csv_headers = ['text_a','text_b','simi']with open(csv_save_path,'w') as f:writer = csv.writer(f)writer.writerow(csv_headers)v = df['vector'].tolist()random.seed(2)for index,ele in tqdm(random.sample(list(enumerate(v)),100),desc='computing similarity'):distances = scipy.spatial.distance.cdist([ele],v,"cosine")[0]zip_dis = zip(range(len(distances)),distances)sorted_dis = sorted(zip_dis,key= lambda x:x[1])for idx2,dis in sorted_dis[1:6]:simi = 1-distext_a = df.iloc[index]['text']text_b = df.iloc[idx2]['text']writer.writerow([text_a,text_b,simi])writer.writerow(['\n'])def get_train_sentences():sentences = []iflytek_public_path = 'data_set/iflytek_public/train.json'with open(iflytek_public_path,'r') as f:lines = f.readlines()for line in lines:dic = json.loads(line)sentence = dic['sentence']sentences.append(sentence)return sentencesif __name__ == '__main__':print('begin')classfification_task()similarity_task()print('finshed!')

數據集長度分布如下:

大部分的長度都是500以內。分類效果如下:

train_acc:0.0 dev_acc:0.006925740669488265 train_acc:0.17708333333333334 dev_acc:0.15736821854559446 train_acc:0.18921493902439024 dev_acc:0.25702193151212005 train_acc:0.2150358606557377 dev_acc:0.28510965756060025 train_acc:0.23620756172839505 dev_acc:0.3251250480954213 train_acc:0.25381290269961665 dev_acc:0.33435936898807234 train_acc:0.2715741178058161 dev_acc:0.37322046941131204 train_acc:0.2888786606064093 dev_acc:0.3889957676029242 train_acc:0.3042976781505441 dev_acc:0.40707964601769914 train_acc:0.31643038087196124 dev_acc:0.4201616006156214 train_acc:0.32606378617692877 dev_acc:0.4301654482493267 train_acc:0.33779772946501446 dev_acc:0.4386302424009234 train_acc:0.34946127261638543 dev_acc:0.44517121969988455 train_acc:0.35988651243998254 dev_acc:0.4544055405925356 train_acc:0.3673557775596235 dev_acc:0.4671027318199307 train_acc:0.3734771538861664 dev_acc:0.46825702193151214 train_acc:0.38084273543633435 dev_acc:0.47441323585994616 train_acc:0.388815520925877 dev_acc:0.4963447479799923 train_acc:0.40715166461159064 dev_acc:0.4967295113505194 train_acc:0.4191149126069171 dev_acc:0.5040400153905348 train_acc:0.43391508890826247 dev_acc:0.5098114659484417 train_acc:0.44833730083390533 dev_acc:0.5163524432474028 train_acc:0.45262061295454226 dev_acc:0.5217391304347826 train_acc:0.4557222389819817 dev_acc:0.522893420546364 train_acc:0.4638674627783615 dev_acc:0.525971527510581 train_acc:0.4735536509951916 dev_acc:0.5332820315505964 train_acc:0.489134908222899 dev_acc:0.5355906117737591 train_acc:0.49248135375731816 dev_acc:0.5363601385148133 train_acc:0.5067971577959512 dev_acc:0.5367449018853405 train_acc:0.5149667544850082 dev_acc:0.5386687187379762 train_acc:0.5165324638969849 dev_acc:0.5459792227779915 train_acc:0.519343966198455 dev_acc:0.5475182762601001 train_acc:0.5222550522207651 dev_acc:0.5490573297422086 train_acc:0.5655597455957674 dev_acc:0.5494420931127356 train_acc:0.5743007223278873 dev_acc:0.5525202000769527

驗證集最高是55%的準確率。使用bert的準確率62%,這里準確率沒有bert的原因,分析有可能:

a、訓練的詞向量維度太小了,使用的是100,而不是300;另外還有一個因素就是詞向量訓練是不是不夠充分。

b、文本數據長度不夠太長,bert模型在500字內的任務還是具有一定的優越性的!

c、最后下游任務的時候,采用的神經網絡模型和訓練過程可能沒有優化的最優,還有提升余量。

另外相似性任務,沒有一個定量的評估,定性的看了一下結果,還行吧!文本相似如任務,數據集iflytek_public,結果:

text_a,text_b,simi "《光影對決》是由電魂網絡傾情研發的二次元向漫改MOBA手游,以熱血國漫為原型,打造美術質量高、玩法創新多、真實還原漫畫形象的精品游戲。放置MOBA無論何時何地,只需3分鐘參與關鍵戰斗,即可體驗一場MOBA實況比賽切換英雄跟據戰場局勢選擇策略陣容不再擔心英雄選錯導致局勢無法挽回,這是個支持單局內切換英雄的MOBA,優勢換英雄碾壓,劣勢換英雄翻盤精靈天賦,技能專精九大精靈支持多種奇妙玩法,擊飛、灼燒、護盾、減CD,加速、減速、打野、減傷害,你的精靈你做主。每個技能都有多種專精,打造專屬成長路線,控制、奶媽、肉盾、輸出自由切換。同名漫畫,英雄待命同名漫畫《光影對決》改編,進入游戲如同穿越二次元世界,還有數十名英雄構建足夠深度的英雄池公平競技,堅守底線堅持最純粹的競技體驗,堅守MOBA游戲最后的底線,拒絕氪金加屬性,平衡競技,三分鐘即可體驗一場MOBA實況比賽,「冬日祭」非對稱MOBA,扮演BOSS碾壓一切戰友招募,限定皮膚等你來拿全新裝備,河道另類視野機制等你體驗","""biubiubiu,警報警報小小突擊隊員們準備出擊游戲中,小伙伴們將會化身為剛毅的沖鋒槍戰士、冷靜的狙擊槍手、犀利的忍者等多個英雄,展開精彩刺激的5v5槍戰,體驗槍戰競技手游帶來的視覺盛宴英雄百變,多樣組合點亮羈絆多種英雄,多樣皮膚,差異化技能,區別性團隊定位,更有特殊羈絆屬性可供激活個人大混戰,狹路相逢勇者勝熱血混戰,恣意PK指尖微操,用技術稱王5V5據點戰,攻防有序戰術王比組合,比戰術與隊友一起打造不一樣的陣容,大殺四方排位賽,組隊開黑上王者好友開黑更默契,帶領戰隊挑戰巔峰小小突擊隊玩家群658590046加群領禮包哦小小突擊隊玩家群②629296113加群領禮包哦官方客服QQ800084487客服電話02066296271,全新橫版MOBA射擊手游,英雄",0.7196215452517407 "《光影對決》是由電魂網絡傾情研發的二次元向漫改MOBA手游,以熱血國漫為原型,打造美術質量高、玩法創新多、真實還原漫畫形象的精品游戲。放置MOBA無論何時何地,只需3分鐘參與關鍵戰斗,即可體驗一場MOBA實況比賽切換英雄跟據戰場局勢選擇策略陣容不再擔心英雄選錯導致局勢無法挽回,這是個支持單局內切換英雄的MOBA,優勢換英雄碾壓,劣勢換英雄翻盤精靈天賦,技能專精九大精靈支持多種奇妙玩法,擊飛、灼燒、護盾、減CD,加速、減速、打野、減傷害,你的精靈你做主。每個技能都有多種專精,打造專屬成長路線,控制、奶媽、肉盾、輸出自由切換。同名漫畫,英雄待命同名漫畫《光影對決》改編,進入游戲如同穿越二次元世界,還有數十名英雄構建足夠深度的英雄池公平競技,堅守底線堅持最純粹的競技體驗,堅守MOBA游戲最后的底線,拒絕氪金加屬性,平衡競技,三分鐘即可體驗一場MOBA實況比賽,「冬日祭」非對稱MOBA,扮演BOSS碾壓一切戰友招募,限定皮膚等你來拿全新裝備,河道另類視野機制等你體驗","《自由之戰2》雙畫風全國爭霸戰希蒂回歸方言上線,寫實/動漫畫風任變迎新朋,接舊友,希蒂回歸奧雷登場。次元風,寫實風,一言不合畫風任變。川粵滬,黑吉遼,方言播報笑出豬叫。搶據點,守領地,全國爭霸不服來戰。游戲介紹《自由之戰2》是MOBA手游《自由之戰》系列的全新作品,通過在玩法、視覺、平衡性、榮譽及資源等多方面的推陳出新,制作團隊合力打造出一款引領未來的MOBA游戲,它的出現將給移動端MOBA以新的2.0的定義。在這個時空規律被打破的世界中,魔法與科技的沖突、空間與力量的角逐??顛覆世界的末日紛爭,一觸即發游戲特色英雄全開放所有英雄全部開放,無任何戰場外屬性售賣,讓所有玩家都站在同一水平線上公平競技。個性外觀自由定制玩家們對于資源的掌握更加主動,武器外觀和技能特效均可自由打造。血戰到底激情的血戰到底玩法將取代投降,讓堅持到底、永不言棄的電競精神體現的更加淋漓盡致。次世代畫質能夠在千元機上流暢運行的次世代畫質水準,打造高品質游戲體驗。,英雄全免費戰斗能賺錢,一、新英雄以死亡之舞著稱的異域絕美少女莎樂美甲鐵城偏離軌道帶來的無名好友菖蒲二、新玩法閃電戰閃電戰是一種新的戰斗模式。在這個模式下,您將在戰斗開始時就獲得高等級和滿槽神裝,隨機開始激爽的團戰配合隊友,找到致勝之路吧三、全新風格地圖和大小龍春季地圖將呈現繁花似錦的春景,全新大小龍形象霸氣登場四、新添視聽效果游戲大廳新增背景和英雄的動漫和寫實風格,玩家可自行選擇搭配新增陜西、山東、河南語音播報優化英雄達倫的戰斗音效新增閃電戰BGM五、新賽季版本更新后迎來全新賽季春季賽六、觀戰和錄像新增在線觀戰系統推薦或好友,也可觀看已完成對局。七、系統優化1.優化解鎖英雄自選激活,若無自選英雄,則不顯示2.優化英雄個人資料展示3.加強自由之力作用蓄滿將必得皮膚4.優化背包的物品篩選,增加級別選項限定5.背包中增加物品表現預覽6.英雄初始武器可裝備外發光寶石7.修復補位玩家身價也被結算的問題八、戰場體驗優化1.優化攻擊鍵,調整選塔/選旗按鈕位置2.可在戰斗內自行設置加粗鎖敵目標連線3.增加戰斗血條放大設置",0.7142720345639265 "《光影對決》是由電魂網絡傾情研發的二次元向漫改MOBA手游,以熱血國漫為原型,打造美術質量高、玩法創新多、真實還原漫畫形象的精品游戲。放置MOBA無論何時何地,只需3分鐘參與關鍵戰斗,即可體驗一場MOBA實況比賽切換英雄跟據戰場局勢選擇策略陣容不再擔心英雄選錯導致局勢無法挽回,這是個支持單局內切換英雄的MOBA,優勢換英雄碾壓,劣勢換英雄翻盤精靈天賦,技能專精九大精靈支持多種奇妙玩法,擊飛、灼燒、護盾、減CD,加速、減速、打野、減傷害,你的精靈你做主。每個技能都有多種專精,打造專屬成長路線,控制、奶媽、肉盾、輸出自由切換。同名漫畫,英雄待命同名漫畫《光影對決》改編,進入游戲如同穿越二次元世界,還有數十名英雄構建足夠深度的英雄池公平競技,堅守底線堅持最純粹的競技體驗,堅守MOBA游戲最后的底線,拒絕氪金加屬性,平衡競技,三分鐘即可體驗一場MOBA實況比賽,「冬日祭」非對稱MOBA,扮演BOSS碾壓一切戰友招募,限定皮膚等你來拿全新裝備,河道另類視野機制等你體驗",游龍英雄是一款格斗類的游戲。游龍英雄擁有麗畫面,逼真格斗技巧。超爽無限連招,讓你真正到格斗的快感。超多裝備供你挑戰,助你挑戰一臂之力。還可以與好友PK對決,看看誰才是高手游龍英雄游戲簡介游龍英雄格斗就是要爽快,自由操控、無鎖定格斗、超短技能CD以及多種技能連擊使用,帶來了超強的無限連招打擊效果,配合酷炫華麗招式,完美的動作手感,任意操作即可放手一戰,帶給你極致暢爽的格斗快感。游龍英雄還專為喜歡刷副本的玩家精心打造了上百個別具匠心的精彩關卡副本,如普通副本、精英副本、BOSS副本等。各副本玩法豐富且不機械,玩家可以通關各類副本獲取不同的升級需求。此外,游戲還貼心的為一些節省時間的玩家提供了副本掃蕩功能,玩家只需要一次性三星通關副本后就可使用副本掃蕩,花更少的時間獲得相等的收益,省時省心省力。游戲日常活動設置豐富,類型多樣,目前主要包括主線任務、支線任務和每日任務。穿插百組副本挑戰、無盡塔闖關、職業競賽、挖礦探寶等多樣百變玩法。無論是喜歡狂刷副本的玩家,還是喜歡競技的玩家,亦或是喜歡趣味休閑的玩家,都能在游龍英雄中輕松找到屬于自己的定位。游龍英雄游戲特色極簡操控無縫連招,完美動作手感特色個性職業,華麗炫目奇幻畫面百組精彩連環副本,豐富的游戲活動深度互動社交玩法,極致暢爽自由招式技能,0.701603375776548 "《光影對決》是由電魂網絡傾情研發的二次元向漫改MOBA手游,以熱血國漫為原型,打造美術質量高、玩法創新多、真實還原漫畫形象的精品游戲。放置MOBA無論何時何地,只需3分鐘參與關鍵戰斗,即可體驗一場MOBA實況比賽切換英雄跟據戰場局勢選擇策略陣容不再擔心英雄選錯導致局勢無法挽回,這是個支持單局內切換英雄的MOBA,優勢換英雄碾壓,劣勢換英雄翻盤精靈天賦,技能專精九大精靈支持多種奇妙玩法,擊飛、灼燒、護盾、減CD,加速、減速、打野、減傷害,你的精靈你做主。每個技能都有多種專精,打造專屬成長路線,控制、奶媽、肉盾、輸出自由切換。同名漫畫,英雄待命同名漫畫《光影對決》改編,進入游戲如同穿越二次元世界,還有數十名英雄構建足夠深度的英雄池公平競技,堅守底線堅持最純粹的競技體驗,堅守MOBA游戲最后的底線,拒絕氪金加屬性,平衡競技,三分鐘即可體驗一場MOBA實況比賽,「冬日祭」非對稱MOBA,扮演BOSS碾壓一切戰友招募,限定皮膚等你來拿全新裝備,河道另類視野機制等你體驗","原創橫版公平競技游戲,熱血刺激格斗類國民手游大作,還原經典格斗體驗,帶來花式作戰樂趣一血、五殺、超神,實力碾壓,收割全場傳奇英雄任憑選擇,斗戰勝佛孫悟空拯救世界,敵軍即將到達戰場,準備團戰.......,,修復了一些BUG。",0.7003351418634919 "《光影對決》是由電魂網絡傾情研發的二次元向漫改MOBA手游,以熱血國漫為原型,打造美術質量高、玩法創新多、真實還原漫畫形象的精品游戲。放置MOBA無論何時何地,只需3分鐘參與關鍵戰斗,即可體驗一場MOBA實況比賽切換英雄跟據戰場局勢選擇策略陣容不再擔心英雄選錯導致局勢無法挽回,這是個支持單局內切換英雄的MOBA,優勢換英雄碾壓,劣勢換英雄翻盤精靈天賦,技能專精九大精靈支持多種奇妙玩法,擊飛、灼燒、護盾、減CD,加速、減速、打野、減傷害,你的精靈你做主。每個技能都有多種專精,打造專屬成長路線,控制、奶媽、肉盾、輸出自由切換。同名漫畫,英雄待命同名漫畫《光影對決》改編,進入游戲如同穿越二次元世界,還有數十名英雄構建足夠深度的英雄池公平競技,堅守底線堅持最純粹的競技體驗,堅守MOBA游戲最后的底線,拒絕氪金加屬性,平衡競技,三分鐘即可體驗一場MOBA實況比賽,「冬日祭」非對稱MOBA,扮演BOSS碾壓一切戰友招募,限定皮膚等你來拿全新裝備,河道另類視野機制等你體驗","體驗公平競技新視界,全新賽季、人氣新英雄、趣味新玩法邀你來戰《時空召喚》是銀漢游戲為MOBA熱愛者傾力打造的一款5V5公平競技MOBA手游,堅守公平競技原則,四技能、迷霧大地圖、無鎖定操作,還原MOBA端游體驗快感。極具特色史詩英雄,過百款精美皮膚,公平團戰,激情開黑,讓MOBA熱愛者憑技術定勝負。Carry、剛正面、配合、走位、策略、戰術、團戰,插眼,回歸MOBA核心樂趣。為熱愛,戰到底,拼技術,秀操作,登上戰場巔峰MOBA熱愛者,就一定要玩《時空召喚》,MOBA熱愛者,一定要玩,一、學習委員艾米登場二、優化內容1、裝備描述優化2、活動界面優化3、對稱視野地圖限時開放三、周更新活動1、學習委員開禮包拿2、賽季末組隊3、神秘商店4、周末登錄5、天稱座免費拿6、星座學園祭7、星座寶箱",0.6932263041160862 " " "師徒邀請全新升級,合伙人計劃讓你月賺萬元,新增每日簽到任務點點就領紅包。云頂天天轉是一款學生手機賺錢軟件,適合學生兼職賺零錢,寶媽兼職賺錢軟件,,用戶可以利用閑暇時間玩游戲賺錢,答題賺錢,做問卷,玩游戲的同時還能分享精彩內容賺零花錢。云頂天天轉操作簡單,較現在流行的學生賺,米賺,錢咖等要更加的直觀,新手引導紅包秒提到賬。活動不停賺注冊就送紅包,定期紅包雨,完成任務領紅包;每天簽到、回帖、答題等就能賺錢;玩出新花樣玩掛機,即送金幣;搖一搖,搖錢樹隨機掉錢;點一點,開啟尋寶旅程;砸金蛋,時時有驚喜;兌換更及時可以兌換話費、游戲幣等,簡單做任務賺話費和零用錢,穩定性改進和錯誤修正。","3分鐘賺10塊錢,搶紅包、手機賺錢pp。紅包貓是國內知名手機搶紅包、賺錢平臺。試玩都能掙錢軟件紅包來了,歡迎成為賺客天天搶紅包手機兼職更簡單,不同于派派偷紅包模式,自動搶紅包更適合學生寶媽們在家賺錢,獎勵比紅包鎖屏賺錢類高的多,一款真正可以免費賺錢兒的軟件。紅包貓專門為新用戶增加了新手任務,只需3分鐘,即可紅包提現,完勝一些紅包惠鎖屏類應用的兌換速度。1.增加紅包收益2.界面效果",0.7560437198261211 "師徒邀請全新升級,合伙人計劃讓你月賺萬元,新增每日簽到任務點點就領紅包。云頂天天轉是一款學生手機賺錢軟件,適合學生兼職賺零錢,寶媽兼職賺錢軟件,,用戶可以利用閑暇時間玩游戲賺錢,答題賺錢,做問卷,玩游戲的同時還能分享精彩內容賺零花錢。云頂天天轉操作簡單,較現在流行的學生賺,米賺,錢咖等要更加的直觀,新手引導紅包秒提到賬。活動不停賺注冊就送紅包,定期紅包雨,完成任務領紅包;每天簽到、回帖、答題等就能賺錢;玩出新花樣玩掛機,即送金幣;搖一搖,搖錢樹隨機掉錢;點一點,開啟尋寶旅程;砸金蛋,時時有驚喜;兌換更及時可以兌換話費、游戲幣等,簡單做任務賺話費和零用錢,穩定性改進和錯誤修正。",紅包速搶紅包快手紅包神器,每日紅包搶不停,整點發紅包是一款讓你在空閑時間邊玩邊賺錢的神器.學生賺錢兼職零用錢軟件,每天淋紅包雨,每時每刻搶紅包,外掛般的存在搶紅包助手。學生、寶媽、白領都在玩的搶.紅包.軟件,讓你刪除手機里所有的搶.紅包.神器.軟件。紅包速搶是一款針對紅包助手,紅包的自動工具,它能很快發現紅包并領取,然后自動搶紅包拆紅包,不放過一分一毫錢。更有高級服務功能,可以提高搶紅包幾率,提高搶大包概率,自動回復感謝語,及屏蔽不想搶的人/群發的紅包。快來試試吧~更新內容1.修復部分BUG2.優化了安裝包大小更快捷3.提高了紅包領取能力更便捷4.優化了性能運行更流暢5.修復上個版本的權限問題,0.716612873935203 "師徒邀請全新升級,合伙人計劃讓你月賺萬元,新增每日簽到任務點點就領紅包。云頂天天轉是一款學生手機賺錢軟件,適合學生兼職賺零錢,寶媽兼職賺錢軟件,,用戶可以利用閑暇時間玩游戲賺錢,答題賺錢,做問卷,玩游戲的同時還能分享精彩內容賺零花錢。云頂天天轉操作簡單,較現在流行的學生賺,米賺,錢咖等要更加的直觀,新手引導紅包秒提到賬。活動不停賺注冊就送紅包,定期紅包雨,完成任務領紅包;每天簽到、回帖、答題等就能賺錢;玩出新花樣玩掛機,即送金幣;搖一搖,搖錢樹隨機掉錢;點一點,開啟尋寶旅程;砸金蛋,時時有驚喜;兌換更及時可以兌換話費、游戲幣等,簡單做任務賺話費和零用錢,穩定性改進和錯誤修正。","注冊就送紅包,試玩秒賺現金。天天紅包手機賺錢是專注于手機威客的應用試客,天天紅包是以紅包為基礎衍生出各種紅包玩法的紅包娛樂工具,讓你每天都淋紅包雨,隨時隨地撿紅包。現在馬上下載天天紅包,和學生、媽媽幫一起加入聯盟,兼職天天賺,每日還能搶紅包。除了免費兌換Q幣,還支持移動、電信、聯通話費及流量充值,它就是你的移動ATM。更新內容快樂紅包、咻一咻、全民紅包、每日紅包、天天紅包、紅包雨、現金紅包、百萬紅包、紅包外掛、紅包助手、搶紅包、微信紅包、紅包獵手、紅包達人、微信紅包外掛、搶紅包神器、紅包神器、紅包提醒、秒搶紅包、搶紅包外掛、紅包快手、搶紅包軟件微信搶紅包、微信自動搶紅包、瓦力搶紅包、微信紅包助手、微信搶紅包神器、紅包管家、自動搶紅包更新內容服務器數據遷移,安全性增強。新增反饋。搶紅包穩定性增強",0.6829532284526146 "師徒邀請全新升級,合伙人計劃讓你月賺萬元,新增每日簽到任務點點就領紅包。云頂天天轉是一款學生手機賺錢軟件,適合學生兼職賺零錢,寶媽兼職賺錢軟件,,用戶可以利用閑暇時間玩游戲賺錢,答題賺錢,做問卷,玩游戲的同時還能分享精彩內容賺零花錢。云頂天天轉操作簡單,較現在流行的學生賺,米賺,錢咖等要更加的直觀,新手引導紅包秒提到賬。活動不停賺注冊就送紅包,定期紅包雨,完成任務領紅包;每天簽到、回帖、答題等就能賺錢;玩出新花樣玩掛機,即送金幣;搖一搖,搖錢樹隨機掉錢;點一點,開啟尋寶旅程;砸金蛋,時時有驚喜;兌換更及時可以兌換話費、游戲幣等,簡單做任務賺話費和零用錢,穩定性改進和錯誤修正。",小魚賺錢,輕松賺錢,生活嗨翻天。讓你越來越有錢,天天都能賺錢,有了小魚賺錢,隨手試玩兼職,只是做做試客就能賺錢,收益明確,兌換迅速。適合學生,寶媽,有閑暇時間的上班族只要你用,就能賺錢。百分之百兌換,真實可靠。更新內容1、添加了分享任務、抽獎大轉盤2、修復了軟件無法加載的問題,0.6678209996050111 "師徒邀請全新升級,合伙人計劃讓你月賺萬元,新增每日簽到任務點點就領紅包。云頂天天轉是一款學生手機賺錢軟件,適合學生兼職賺零錢,寶媽兼職賺錢軟件,,用戶可以利用閑暇時間玩游戲賺錢,答題賺錢,做問卷,玩游戲的同時還能分享精彩內容賺零花錢。云頂天天轉操作簡單,較現在流行的學生賺,米賺,錢咖等要更加的直觀,新手引導紅包秒提到賬。活動不停賺注冊就送紅包,定期紅包雨,完成任務領紅包;每天簽到、回帖、答題等就能賺錢;玩出新花樣玩掛機,即送金幣;搖一搖,搖錢樹隨機掉錢;點一點,開啟尋寶旅程;砸金蛋,時時有驚喜;兌換更及時可以兌換話費、游戲幣等,簡單做任務賺話費和零用錢,穩定性改進和錯誤修正。",手機賺錢.軟件,做任務賺錢,就選任務吧賺錢。每天十分鐘,賺錢多輕松。通過這款手機pp,只需要一個手機,你就能夠查看大量的任務,選擇自己喜歡的任務完成,就能獲取豐厚的獎勵啦。用它賺取零用錢。每天閑著無聊在.搶紅包.搶的那點錢還不夠流量費呢,何不把這個時間用來做.兼職.任務,賺一筆可觀的收入。讓手機從此不再用來搶紅包,讓你刪除手機里所有的.搶紅包.神器、搶.紅包.軟件等。想買iphoneX沒錢,天天盯著一元奪寶、錢咖、學生賺、天天奪寶、零錢奪寶等奪寶pp,希望能花個10塊中一個那還不如下載一個好好做兼職任務賺一筆錢全額下單買呢。這是一款當下很流行的.手機賺錢.軟件,有了它,麻麻再也不當心我的零花錢了更新內容1,更新任務詳情頁面2,增加用戶賺錢入口3,修復無法跳轉到外部瀏覽器的問題,0.6571022790821546 " " "WebSharing網絡共享v1.6.1通過WiFi用電腦網頁查看手機SD卡文件,不用再使用USB連接,其他功能等你發掘。使用方法1、先開啟WIFI網絡勾選允許管理員訪問也可以選擇來賓賬戶訪問,但會有限制點開始,如果出現重試連接點忽略確定你已經連上WIFI會出現一個對話框,按確定。2、在確定你的WIFI連接正常時你可以進設置菜單取消掉連接監控。3、這時會在訪問出現一個網址如http//...2112/部分表示你手機的IP地址和隨機密碼。在電腦上打開瀏覽器,在地址欄上輸入http//...2112/,回車,會出現叫你輸入密碼對話框,輸入你手機上顯示的隨機密碼,這樣在電腦上就能用網面查看到你手機SD卡上的內容,無需USB連接。你可以在電腦上對你的SD卡上的內容進行打開點左鍵、上傳、下載,復制、刪除操作等操作在電腦頁面上點右鍵,很方便。,,BUG修復。","坑爹的舍友又在用迅雷下片,正在打lol的我只能暗自躺淚,但是只要你下載此軟件,手機獲取了root權限,應用加入root白名單,無需登陸路由器,手指一動就能限制他們網速.限制手機網速不是都有效,但都可以斷網電腦網絡,原因不詳,因手機網卡各不同抱歉不能解決功能1.限制1人以上的同一個WIfi下包括電腦和手機等網絡設備.2.對指定IP進行抓包,數據抓包,查看正在上的網站鏈接,并保存數據庫,隨時可查看抓包數據,3.保護本機網絡,防止斷網軟件攻擊4.備注名字,每次設備連接就顯示該設備的備注名字5.查詢手機已連接過的wifi密碼6.新增萬能鑰匙接口,查詢附近可連接的wifi密碼不需root,直接打開可用網速限制功能不能實現的情況有下面1手機沒進行root,如何root,請百度搜索百度root,360root,root精靈等2可邊玩手機把軟件切換后臺,但鎖屏狀態下可能手機系統殺死限制網速功能,不用手機時候請軟件切換到界面,軟件只要打開就有保持屏幕常亮功能.,一鍵限制蹭網人網絡,為您優化了體驗細節。",0.7824168703011418 "WebSharing網絡共享v1.6.1通過WiFi用電腦網頁查看手機SD卡文件,不用再使用USB連接,其他功能等你發掘。使用方法1、先開啟WIFI網絡勾選允許管理員訪問也可以選擇來賓賬戶訪問,但會有限制點開始,如果出現重試連接點忽略確定你已經連上WIFI會出現一個對話框,按確定。2、在確定你的WIFI連接正常時你可以進設置菜單取消掉連接監控。3、這時會在訪問出現一個網址如http//...2112/部分表示你手機的IP地址和隨機密碼。在電腦上打開瀏覽器,在地址欄上輸入http//...2112/,回車,會出現叫你輸入密碼對話框,輸入你手機上顯示的隨機密碼,這樣在電腦上就能用網面查看到你手機SD卡上的內容,無需USB連接。你可以在電腦上對你的SD卡上的內容進行打開點左鍵、上傳、下載,復制、刪除操作等操作在電腦頁面上點右鍵,很方便。,,BUG修復。",茄子快傳是一款跨平臺,零流量,傳輸速度超藍牙200倍的極速文件傳輸工具,可以隨時和朋友分享手機或電腦上的音樂,照片,視頻,應用游戲或者任何格式的文件。全球超過200個國家,5億+用戶下載使用;谷歌應用商店15個國家/地區工具類應用排名;產品特點無需聯網無需連接任何網絡,無需數據流量,隨時隨地任意分享。速度最快傳輸速度秒殺藍牙200倍,最快速度可達20M/s以上。跨屏傳輸手機&電腦&平板,Android&iOS&WindowsPhone&WindowsXP/7/8,多平臺隨意傳。功能強大支持圖片、視頻、音樂、已安裝應用以及SD卡中的任意文件。操作便捷進入傳送門,好友可以隨時互相收發,文件分享容易。連接電腦手機電腦互傳文件,瀏覽照片文件,播放音樂,滑動切換同步下載手機直接遙控電腦PPT播放,開會、上課、演講都不是問題一鍵換機舊手機通訊錄,短信,彩信,音樂,視頻,應用和數據,一鍵全部遷移到新手機。歡迎下載電腦客戶端http//ushreit.com更新內容適配Android8.0的熱點啟動,并且可使用二維碼掃描方式連接熱點,0.7725630520206839 "WebSharing網絡共享v1.6.1通過WiFi用電腦網頁查看手機SD卡文件,不用再使用USB連接,其他功能等你發掘。使用方法1、先開啟WIFI網絡勾選允許管理員訪問也可以選擇來賓賬戶訪問,但會有限制點開始,如果出現重試連接點忽略確定你已經連上WIFI會出現一個對話框,按確定。2、在確定你的WIFI連接正常時你可以進設置菜單取消掉連接監控。3、這時會在訪問出現一個網址如http//...2112/部分表示你手機的IP地址和隨機密碼。在電腦上打開瀏覽器,在地址欄上輸入http//...2112/,回車,會出現叫你輸入密碼對話框,輸入你手機上顯示的隨機密碼,這樣在電腦上就能用網面查看到你手機SD卡上的內容,無需USB連接。你可以在電腦上對你的SD卡上的內容進行打開點左鍵、上傳、下載,復制、刪除操作等操作在電腦頁面上點右鍵,很方便。,,BUG修復。",茄子快傳是一款跨平臺,零流量,傳輸速度超藍牙200倍的極速文件傳輸工具,可以隨時和朋友分享手機或電腦上的音樂,照片,視頻,應用游戲或者任何格式的文件。全球超過200個國家,5億+用戶下載使用;谷歌應用商店15個國家/地區工具類應用排名;產品特點無需聯網無需連接任何網絡,無需數據流量,隨時隨地任意分享。速度最快傳輸速度秒殺藍牙200倍,最快速度可達20M/s以上。跨屏傳輸手機&電腦&平板,Android&iOS&WindowsPhone&WindowsXP/7/8,多平臺隨意傳。功能強大支持圖片、視頻、音樂、已安裝應用以及SD卡中的任意文件。操作便捷進入傳送門,好友可以隨時互相收發,文件分享容易。連接電腦手機電腦互傳文件,瀏覽照片文件,播放音樂,滑動切換同步下載手機直接遙控電腦PPT播放,開會、上課、演講都不是問題一鍵換機舊手機通訊錄,短信,彩信,音樂,視頻,應用和數據,一鍵全部遷移到新手機。歡迎下載電腦客戶端http//ushreit.com更新內容適配Android8.0的熱點啟動,并且可使用二維碼掃描方式連接熱點,0.7725630520206839 "WebSharing網絡共享v1.6.1通過WiFi用電腦網頁查看手機SD卡文件,不用再使用USB連接,其他功能等你發掘。使用方法1、先開啟WIFI網絡勾選允許管理員訪問也可以選擇來賓賬戶訪問,但會有限制點開始,如果出現重試連接點忽略確定你已經連上WIFI會出現一個對話框,按確定。2、在確定你的WIFI連接正常時你可以進設置菜單取消掉連接監控。3、這時會在訪問出現一個網址如http//...2112/部分表示你手機的IP地址和隨機密碼。在電腦上打開瀏覽器,在地址欄上輸入http//...2112/,回車,會出現叫你輸入密碼對話框,輸入你手機上顯示的隨機密碼,這樣在電腦上就能用網面查看到你手機SD卡上的內容,無需USB連接。你可以在電腦上對你的SD卡上的內容進行打開點左鍵、上傳、下載,復制、刪除操作等操作在電腦頁面上點右鍵,很方便。,,BUG修復。",Genie是一款專為NETGEAR路由器設計的客戶端軟件,用戶輸入登錄密碼后即可在手機上方便的修改路由器的各種配置,包括無線網絡名稱、密碼、開放訪客專用網絡、查看并管理聯入網內的設備、控制網絡訪問權限、控制流量、網內設備的之間無線迅速的文件傳送、無線信號分析、附加USB設備的文件訪問與上傳下載、一鍵重啟路由器。還可以作為播放器訪問并播放網內其他設備上的圖片以及視頻、內嵌的QR碼掃描不僅可以掃描網絡密碼輕松上網,亦可掃描日常生活中遇到的所有QR信息。,。,0.7693056650689577 "WebSharing網絡共享v1.6.1通過WiFi用電腦網頁查看手機SD卡文件,不用再使用USB連接,其他功能等你發掘。使用方法1、先開啟WIFI網絡勾選允許管理員訪問也可以選擇來賓賬戶訪問,但會有限制點開始,如果出現重試連接點忽略確定你已經連上WIFI會出現一個對話框,按確定。2、在確定你的WIFI連接正常時你可以進設置菜單取消掉連接監控。3、這時會在訪問出現一個網址如http//...2112/部分表示你手機的IP地址和隨機密碼。在電腦上打開瀏覽器,在地址欄上輸入http//...2112/,回車,會出現叫你輸入密碼對話框,輸入你手機上顯示的隨機密碼,這樣在電腦上就能用網面查看到你手機SD卡上的內容,無需USB連接。你可以在電腦上對你的SD卡上的內容進行打開點左鍵、上傳、下載,復制、刪除操作等操作在電腦頁面上點右鍵,很方便。,,BUG修復。","掃掃二維碼是一款超過千萬用戶使用的快啟極讀,識別二維碼掃描神器輕巧簡單,滿足用戶的個性化需求,通過卡哇伊的畫風,強大的解析能力,上線至今獲得用戶的一致好評不需連接網絡即可獲取二維碼信息,自動掃描解析一步到位,幫你解析二維碼,為用戶帶來可愛,時尚,便捷,高效的掃描體驗.掃掃二維碼用途通過手機攝像頭掃描二維碼即可實現快速手機上網,快速便捷地瀏覽網頁,下載圖文,音樂,視頻,獲取優惠券,參與抽獎,了解企業產品信息,而省去了在手機上輸入URL的繁瑣過程,實現一鍵上網.同時,還可以方便地用手機識別和存儲名片,自動輸入短信,獲取公共服務如天氣預報,實現電子地圖查詢定位,手機閱讀等多種功能.隨著3G的到來,二維碼可以為網絡瀏覽,下載,在線視頻,網上購物,網上支付等提供方便的入口.掃掃二維碼特點★一鍵啟動快速掃描★智能糾錯識別更新內容1、修改部分界面顯示異常的問題2、優化部分功能界面的流暢性3、優化應用的界面",0.7621828836611424 " " 喵嗚顏文字一款手機聊天必備的搞笑表情神器,擁有最萌,最好玩的斗圖表情文字。爆紅的喵嗚顏文字,正激萌來襲。滑動切換,輕松查找,更便捷的操作,更清新的界面。朋友聊天、個性簽名,點擊復制,想用就用,賣萌無極限更有定期的表情庫更新,給你驚喜~不同于特殊顏文字Girls,次元顏文字,特殊符號大全,表情符號鍵盤,可愛顏文字,顏文字輸入法,顏文字大全,表情鍵盤,表情符號顏文字,Boys顏文字Book表情符號,蜂巢輸入法,特殊字符鍵盤,字體鍵盤,可愛表情,GIF表情包大全,開發者字體工具,趣味表情大全,可愛顏文字表情符號等應用。喵嗚顏文字表情,與微信,QQ,微博,探探,陌陌,短信,易信,郵件,短信等各種社交軟件及交流平臺完美集成,一鍵分享豐富的表情顏文字到微信對話、朋友圈。最好用的全能表情聊天王,微信聊天斗圖神器。新增智能懸浮球顯示,聊天可以超級方便使用顏文字表情了啊啊啊而且只在社交軟件上出現,平時默默隱藏不打擾,炒雞人性化有沒有官方微博新浪&騰訊喵嗚顏文字官方QQ群201930338商務合作QQ2946205548更新內容1、修復部分機型界面卡頓情況2、頁面操作排版更簡潔,輕松制作微信、QQ專屬GIF圖片表情包,制作表情工廠,聊天斗圖神器產品簡介想在斗圖界一展拳腳嗎想在群聊中脫穎而出嗎下載斗圖APP,滿足你的愿望斗圖是一款完全不收錢的微信、微博、QQ動態圖聊天表情APP,提供海量表情素材,輕松制作屬于自己的專屬表情,聊天嗨翻天。聊天斗圖必備工具,支持在微信、QQ、微博中發送各種表情。開啟表情交流的全新聊天模式,體驗歡樂的聊天輔助工具,適用于QQ和微信聊天,集合了萌、傻、酷、拽等多位表情帝的表情包內容。產品特點海量素材金館長、張學友、教皇各大表情帝陪你一起立足斗圖界內涵文案難道長得好看也是一種罪和你對話是對我的侮辱……個性制作輕松上傳照片,添加文字制作自己的專屬表情快速分享微信,QQ,收藏,一鍵直達聯系我們官方網站http//bq.jiefu.tv/doutu/官方微博http//weibo.com/boxiogif微信號gifQQ群542676857客服QQ19060677更新內容修復部分小錯誤,提升整體穩定性。,0.8274372103583005 喵嗚顏文字一款手機聊天必備的搞笑表情神器,擁有最萌,最好玩的斗圖表情文字。爆紅的喵嗚顏文字,正激萌來襲。滑動切換,輕松查找,更便捷的操作,更清新的界面。朋友聊天、個性簽名,點擊復制,想用就用,賣萌無極限更有定期的表情庫更新,給你驚喜~不同于特殊顏文字Girls,次元顏文字,特殊符號大全,表情符號鍵盤,可愛顏文字,顏文字輸入法,顏文字大全,表情鍵盤,表情符號顏文字,Boys顏文字Book表情符號,蜂巢輸入法,特殊字符鍵盤,字體鍵盤,可愛表情,GIF表情包大全,開發者字體工具,趣味表情大全,可愛顏文字表情符號等應用。喵嗚顏文字表情,與微信,QQ,微博,探探,陌陌,短信,易信,郵件,短信等各種社交軟件及交流平臺完美集成,一鍵分享豐富的表情顏文字到微信對話、朋友圈。最好用的全能表情聊天王,微信聊天斗圖神器。新增智能懸浮球顯示,聊天可以超級方便使用顏文字表情了啊啊啊而且只在社交軟件上出現,平時默默隱藏不打擾,炒雞人性化有沒有官方微博新浪&騰訊喵嗚顏文字官方QQ群201930338商務合作QQ2946205548更新內容1、修復部分機型界面卡頓情況2、頁面操作排版更簡潔,1.可以發語音、文字消息、表情、圖片、視頻30M流量可以收發上千條語音,省電省流量2.朋友圈,跟朋友們分享生活點滴3.搖一搖、查看附近的人,世界不再有陌生人4.掃一掃,可以掃商品條碼、圖書封面、CD封面,甚至掃描英文單詞來翻譯成中文5.公眾帳號,用微信關注明星、看新聞、設提醒6.游戲中心,和朋友們一起玩游戲7.表情商店,有趣好玩的表情在這里特別說明微信只消耗網絡流量,不產生短信電話費用更新內容本次更新解決了一些已知問題。最近更新用「視頻動態」,記錄眼前的世界。也可以給朋友的視頻「冒個泡」,告訴他你來過。界面全新改版,更清晰直觀的視覺與操作體驗。可以在看一看里瀏覽朋友認為好看的文章。在聊天詳情頁中,可以給單聊設置強提醒。,0.7652208334399183 喵嗚顏文字一款手機聊天必備的搞笑表情神器,擁有最萌,最好玩的斗圖表情文字。爆紅的喵嗚顏文字,正激萌來襲。滑動切換,輕松查找,更便捷的操作,更清新的界面。朋友聊天、個性簽名,點擊復制,想用就用,賣萌無極限更有定期的表情庫更新,給你驚喜~不同于特殊顏文字Girls,次元顏文字,特殊符號大全,表情符號鍵盤,可愛顏文字,顏文字輸入法,顏文字大全,表情鍵盤,表情符號顏文字,Boys顏文字Book表情符號,蜂巢輸入法,特殊字符鍵盤,字體鍵盤,可愛表情,GIF表情包大全,開發者字體工具,趣味表情大全,可愛顏文字表情符號等應用。喵嗚顏文字表情,與微信,QQ,微博,探探,陌陌,短信,易信,郵件,短信等各種社交軟件及交流平臺完美集成,一鍵分享豐富的表情顏文字到微信對話、朋友圈。最好用的全能表情聊天王,微信聊天斗圖神器。新增智能懸浮球顯示,聊天可以超級方便使用顏文字表情了啊啊啊而且只在社交軟件上出現,平時默默隱藏不打擾,炒雞人性化有沒有官方微博新浪&騰訊喵嗚顏文字官方QQ群201930338商務合作QQ2946205548更新內容1、修復部分機型界面卡頓情況2、頁面操作排版更簡潔,搜狗輸入法,擁有全能輸入方式、海量詞庫與智能預測,致力高效流暢的輸入體驗,引領億萬用戶輸入之選。全能輸入全面支持拼音、手寫、語音、筆畫、五筆暢快表達海量詞庫,分秒匹配妙算引擎動態預測,智能糾錯貼心手寫首字注音,生僻字輸入無憂智能語音高效識別,說話實時變文字文字掃描紙面文字拍照輸入快捷短語常用語、流行語一鍵輸入個性皮膚新鮮主題,悅耳按鍵音,驚喜動畫實力表情魔性斗圖,有料圖表情,鮮萌顏文字,生動Emoji手機輸入,依然搜狗更新內容1.語音輸入中日韓隨心譯,跨國聊天無壓力。2.視頻皮膚3D觸感,立享鮮活。3.快捷登錄簡單登錄,輕松同步,0.7379496144015417 喵嗚顏文字一款手機聊天必備的搞笑表情神器,擁有最萌,最好玩的斗圖表情文字。爆紅的喵嗚顏文字,正激萌來襲。滑動切換,輕松查找,更便捷的操作,更清新的界面。朋友聊天、個性簽名,點擊復制,想用就用,賣萌無極限更有定期的表情庫更新,給你驚喜~不同于特殊顏文字Girls,次元顏文字,特殊符號大全,表情符號鍵盤,可愛顏文字,顏文字輸入法,顏文字大全,表情鍵盤,表情符號顏文字,Boys顏文字Book表情符號,蜂巢輸入法,特殊字符鍵盤,字體鍵盤,可愛表情,GIF表情包大全,開發者字體工具,趣味表情大全,可愛顏文字表情符號等應用。喵嗚顏文字表情,與微信,QQ,微博,探探,陌陌,短信,易信,郵件,短信等各種社交軟件及交流平臺完美集成,一鍵分享豐富的表情顏文字到微信對話、朋友圈。最好用的全能表情聊天王,微信聊天斗圖神器。新增智能懸浮球顯示,聊天可以超級方便使用顏文字表情了啊啊啊而且只在社交軟件上出現,平時默默隱藏不打擾,炒雞人性化有沒有官方微博新浪&騰訊喵嗚顏文字官方QQ群201930338商務合作QQ2946205548更新內容1、修復部分機型界面卡頓情況2、頁面操作排版更簡潔,產品特點多種比例模板,橫屏豎屏任意切換,短視頻制作神器;海量音樂庫資源,支持手機本地和PC端同步上傳;支持相冊存儲管理,想要的照片隨時隨地導入導出;每周上新,專業設計團隊精心打造多種類型炫酷主題模板,如生日、親子、寶寶、節假日、明星、情侶表白、旅行記錄、友誼歲月、同學聚會、婚禮現場、古風文藝、影視劇等等;功能特點一鍵套用,三步輕松制作精美音樂相冊、視頻相冊、電子相冊、短視頻、朋友圈視頻、微商相冊、企業宣傳相冊、賀卡邀請函等;一鍵上傳,快速生成音圖文、視頻并茂的生活旅行日記一鍵拼圖,支持個性化編輯設計圖片,豐富的文字和素材,選擇喜歡的模板即可生成精美主題拼圖;一鍵打印,支持手機上傳照片便捷沖洗照片、證件照、制作日歷、雜志、定制手機殼、服裝、禮品等,并郵寄上門;一鍵生成精品賀卡邀請函,祝福、婚慶、開業、生日等海量主題任君挑選;一鍵分享至微信好友,朋友圈,微博等社交網絡,評論互動優化再升級;==聯系我們==我們重視每一位用戶的建議反饋,努力把產品做得更好QQ群870026544微信公眾號魔力相冊molixingce魔力相冊網站www.molixingce.com更新內容1、BUG修復和性能優化2、選取時顯示全部照片,可以快速找到你的照片啦,0.7101520838568679 喵嗚顏文字一款手機聊天必備的搞笑表情神器,擁有最萌,最好玩的斗圖表情文字。爆紅的喵嗚顏文字,正激萌來襲。滑動切換,輕松查找,更便捷的操作,更清新的界面。朋友聊天、個性簽名,點擊復制,想用就用,賣萌無極限更有定期的表情庫更新,給你驚喜~不同于特殊顏文字Girls,次元顏文字,特殊符號大全,表情符號鍵盤,可愛顏文字,顏文字輸入法,顏文字大全,表情鍵盤,表情符號顏文字,Boys顏文字Book表情符號,蜂巢輸入法,特殊字符鍵盤,字體鍵盤,可愛表情,GIF表情包大全,開發者字體工具,趣味表情大全,可愛顏文字表情符號等應用。喵嗚顏文字表情,與微信,QQ,微博,探探,陌陌,短信,易信,郵件,短信等各種社交軟件及交流平臺完美集成,一鍵分享豐富的表情顏文字到微信對話、朋友圈。最好用的全能表情聊天王,微信聊天斗圖神器。新增智能懸浮球顯示,聊天可以超級方便使用顏文字表情了啊啊啊而且只在社交軟件上出現,平時默默隱藏不打擾,炒雞人性化有沒有官方微博新浪&騰訊喵嗚顏文字官方QQ群201930338商務合作QQ2946205548更新內容1、修復部分機型界面卡頓情況2、頁面操作排版更簡潔,"輕松制作屬于自己的專屬表情,聊天嗨翻天。聊天斗圖必備工具,支持在社交平臺中發送各種表情。開啟表情交流的全新聊天模式,體驗歡樂的聊天輔助工具,適用于社交聊天,,,版本更新后表情內容豐富,頁面流暢",0.6979619691864541 " " OPPO用戶信息統一管理平臺帳號信息管理能夠統一管理OPPO帳號的安全資料,包括手機號、郵箱、密碼等;個人資產管理能夠查詢積分、可幣的余額及變更記錄;會員權益查詢能夠查詢自己的會員等級以及能夠享受到的會員服務;客服信息查詢能夠查詢附近的客服維修網點,并且進行線上預約;新增功能積分商城后續可以根據您所在的地區不定期推薦當地特色商品,敬請期待~,微盟商戶助手,移動客服及管理平臺。微客服基本即時通訊、消息提醒功能接入、關閉、轉接、標注客人查看客人信息、訂單信息、消息記錄旺鋪工作臺訂單管理對訂單進行發貨、改價、標注、關閉售后管理查看售后訂單,同意或拒絕等商品管理修改商品庫存、價格、上下架自提核銷查看待核銷訂單,掃碼核銷訂單評論管理查看、回復、屏蔽用戶評論統計數據查看旺鋪營收、訂單、流量、客戶數據優惠券核銷核銷線下優惠券,促進到店消費客來店工作臺收銀臺可掃描客戶付款碼在線收款或現金收款掃碼核銷客戶產品、優惠券、預約單一鍵核銷會員查詢查看會員訂單、優惠券、消費、充值、積分信息,充值、修改積分、消費交易記錄查看所有訂單、預約單、收款、充值記錄售后管理查看退款訂單,可拒絕或確認退款應用微預約查看、確認/拒絕、核銷預約單消息旺鋪、客來店消息提醒旺鋪門店工作臺旺鋪門店賬號登錄,可使用收銀臺、核銷訂單、核銷優惠券、訂單管理、財務明細、消息提醒功能。旺鋪自提點工作臺旺鋪自提點登錄,可使用核銷訂單、核銷優惠券、消息提醒功能。更新內容v3.0.6更新介紹修復部分訂單快遞信息不展示的問題,0.790785627004255 OPPO用戶信息統一管理平臺帳號信息管理能夠統一管理OPPO帳號的安全資料,包括手機號、郵箱、密碼等;個人資產管理能夠查詢積分、可幣的余額及變更記錄;會員權益查詢能夠查詢自己的會員等級以及能夠享受到的會員服務;客服信息查詢能夠查詢附近的客服維修網點,并且進行線上預約;新增功能積分商城后續可以根據您所在的地區不定期推薦當地特色商品,敬請期待~,天津農商銀行手機銀行為您提供手機銀行,包括交易查詢、轉賬、信用卡、理財、基金、通知存款、定活互轉、掃一掃、賬戶管理等功能。輔助功能,包括無卡取款、短信簽約、小額免簽免密管理、消息推送、日志查詢、回單驗證、存貸款計算器、房貸計算器、存貸款利率查詢、匯率計算、網點地圖查詢等功能。安全中心,包括手勢密碼登錄、指紋登錄、數字證書密碼設置、登錄密碼管理。更新內容自助注冊增加客戶隱私保護聲明。,0.7847660803427055 OPPO用戶信息統一管理平臺帳號信息管理能夠統一管理OPPO帳號的安全資料,包括手機號、郵箱、密碼等;個人資產管理能夠查詢積分、可幣的余額及變更記錄;會員權益查詢能夠查詢自己的會員等級以及能夠享受到的會員服務;客服信息查詢能夠查詢附近的客服維修網點,并且進行線上預約;新增功能積分商城后續可以根據您所在的地區不定期推薦當地特色商品,敬請期待~,全新的微盟商戶助手,支持微盟新云平臺商戶登錄。全新微盟店鋪管理工具,幫助商戶更加高效便捷地處理訂單、管理會員、核銷卡券、溝通客戶、管理應用等。客來店收銀臺可掃描客戶付款碼收款或現金收款核銷核銷客戶產品、預約、優惠券訂單管理管理產品、預約、收銀訂單會員管理查詢會員,會員充值、消費、修改積分消息通知產品、預約、收銀訂單消息及時通知客服功能手機端客服工具,與客戶更便捷地溝通微商城待辦事項待發貨訂單、待處理售后訂單提醒訂單管理對訂單進行篩選、發貨、改價、標記、取消操作售后管理管理售后訂單,同意或拒絕等數據統計支持查看客流分析、客戶群體畫像、交易轉化及明細消息通知待發貨、已完成、異常物流、售后訂單消息及時通知客服功能移動端在線客服,隨時隨地和客戶便捷地溝通智慧美業核銷核銷券,計次周期卡,積分商城訂單訂單管理優惠買單訂單查看,服務項目接單,到店等操作核銷記錄查看券、服務項目、積分商城核銷記錄如您在使用中遇到的任何問題或需求建議,請及時聯系我們。微盟官網www.weimob.com咨詢電話10105188更新內容V2.0.5版本更新智慧零售1.增加客戶線索功能,導購可實時查看專屬客戶的部分行為軌跡2.修復已知bug,和細節優化,0.7742892857437249 OPPO用戶信息統一管理平臺帳號信息管理能夠統一管理OPPO帳號的安全資料,包括手機號、郵箱、密碼等;個人資產管理能夠查詢積分、可幣的余額及變更記錄;會員權益查詢能夠查詢自己的會員等級以及能夠享受到的會員服務;客服信息查詢能夠查詢附近的客服維修網點,并且進行線上預約;新增功能積分商城后續可以根據您所在的地區不定期推薦當地特色商品,敬請期待~,"興服務,新體驗興業銀行專為Android用戶推出全新尊尚版手機銀行,讓您尊享貼身的移動金融服務,樂享掌控一切的自然人生。客戶端手機銀行三大特點一、友好的操作體驗1、全新的界面設計和菜單布局;2、優化手機銀行登錄、只需設定登錄手機號即可快速登錄;3、使用短信口令認證,辦理轉賬、繳費等業務更加便捷;4、提供真正符合手機用戶的操作體驗,一觸即發,讓您愛上touch的感覺。二、貼身的金融服務提供查詢轉賬、投資理財、信用卡等全面的移動金融服務,讓您隨時隨地隨身尊享貼身金融服務。1、查詢轉賬實時行內轉賬、實時跨行轉出、普通跨行轉賬、實時跨行轉入等。2、投資理財貴金屬、理財產品、基金、外匯、銀證、國債、智能通知存款等。3、信用卡賬務查詢、還款、消費分期、賬單分期、預借現金等。三、豐富的增值服務1、地圖查詢提供營業網點、ATM地圖查詢及周邊查詢功能;2、豐富資訊提供個人金融、企業金融、貴金屬市場行情及理財資訊信息等;3、金融助手提供信用卡優惠活動、產品介紹、還款方式、特惠商戶查詢功能;4、本程序免費。,,增強客戶端穩定性。",0.7618757146292684 OPPO用戶信息統一管理平臺帳號信息管理能夠統一管理OPPO帳號的安全資料,包括手機號、郵箱、密碼等;個人資產管理能夠查詢積分、可幣的余額及變更記錄;會員權益查詢能夠查詢自己的會員等級以及能夠享受到的會員服務;客服信息查詢能夠查詢附近的客服維修網點,并且進行線上預約;新增功能積分商城后續可以根據您所在的地區不定期推薦當地特色商品,敬請期待~,"軟件介紹由優合集團內部向合作客戶發放賬號和密碼,優速寶是專屬于優合集團客戶使用的app。主要功能1、訂單查詢主要查詢客戶名下訂單的詳細商品、價格、物流2、通知查看在新聞頁面客戶可以看到優合集團后臺發送出去的通知3、庫存查詢查詢客戶到港的貨物存放情況4、數據分析客戶可以查看自己購買商品的詳細資料,如最近時間的價格走勢、最近購買柜量的數據分析、各國家購買數量分析等,,進行了界面的優化",0.7587055730484011 " " 《像素方塊世界?BlockCrft3D》是一款像素建造類游戲。在開放世界中構建屬于自己的美妙城市。在建造出基本的城市之后,還可以進行宏偉的建造工程,比如艾菲爾鐵塔、飛機,甚至還能建造行星策劃你是還會吸引外來的居住者入住于此,還有小貓、小狗、甚至還有大象也會加入到城市當中。喜歡這款游戲的話就趕緊一起來玩吧~了一些BUG。,"這是一款十分有趣耐玩的模擬經營游戲。在這里你首先需要建立一些金礦場和木材廠保證你建造建筑物的物資資源的穩定來源,然后你在有了一定的金錢和木材之后就可以開始構建你心目中的城市啦,你就是這個世界的支配者,復古的老式木屋,泥濘的路面還是現代化都市的高樓大撒和高速公路,一切都隨心所欲的構建。打造你的夢中之城。本游戲完全免費,無任何廣告。我的城市,一款模擬建造城市的游戲。你的任務,就是設計建造世界上的城市。游戲開始,需要建立金礦廠和材料廠,以獲得穩定的收入,剩下的就只有發揮你的創意了。,,修復建筑左角和右角放樹木不協調問題修復建筑占用面積不正常問題",0.6475594317836554 《像素方塊世界?BlockCrft3D》是一款像素建造類游戲。在開放世界中構建屬于自己的美妙城市。在建造出基本的城市之后,還可以進行宏偉的建造工程,比如艾菲爾鐵塔、飛機,甚至還能建造行星策劃你是還會吸引外來的居住者入住于此,還有小貓、小狗、甚至還有大象也會加入到城市當中。喜歡這款游戲的話就趕緊一起來玩吧~了一些BUG。,"《完美城市》是一款以城市建設為題材的模擬經營類手機網絡游戲。高度自由的道路建設系統,逼真的3D城市夜景,豐富的建筑類型,隨等級變化的建筑外貌,讓你親手打造華麗的城市景觀。輕松完成任務,獲取世界聞名的景點建筑,世界名城盡在掌中。還有航海捕魚、聯盟互助、多邊貿易等休閑玩法,讓升級等待不再無聊。現在就加入城市建造者中,馬上開始玩《完美城市》你的城市將會聲名赫赫,成為世界的新中心通過游戲,還可以培養玩家全局規劃和團隊協作的精神。,3D模擬經營自由建造城市手游,1.真實的城市經營規劃道路,建造住宅,發展商業,滿足城市中的居民的衣食住行。你,既是這個城市的市長先生,也是這個城市的造物之神,一切的一切由你的意愿去發展。2.豐富的建筑模型《完美城市》擁有超過100種不同外觀、大小與風格的建筑模型,完全模擬出一座城市的方方面面,從餐廳到便利店,從治安亭到高級社區醫院,這里有城市中的一切,不同的模型讓城市面目更加豐富,也各具特色。3.完整的工業生產體驗《完美城市》中有多樣的工業生產建筑,模擬出一條完整的工業生產鏈,帶給玩家生產的快感與成就。",0.6150367069039598 《像素方塊世界?BlockCrft3D》是一款像素建造類游戲。在開放世界中構建屬于自己的美妙城市。在建造出基本的城市之后,還可以進行宏偉的建造工程,比如艾菲爾鐵塔、飛機,甚至還能建造行星策劃你是還會吸引外來的居住者入住于此,還有小貓、小狗、甚至還有大象也會加入到城市當中。喜歡這款游戲的話就趕緊一起來玩吧~了一些BUG。,由PlyCoolZombieSportGmes提供的一款我的世界風格的模擬建造游戲。覺得自己是一個公主,住在一座城堡發揮擁有無限資源的創意模式或深井成立方體女孩的世界,打造你的家園。內飾的設計,建造和設計廚房,建立有SPA,美甲沙龍,寵物店,化妝和美容沙龍的城市。更新內容提升了穩定性。,0.5705347935356706 《像素方塊世界?BlockCrft3D》是一款像素建造類游戲。在開放世界中構建屬于自己的美妙城市。在建造出基本的城市之后,還可以進行宏偉的建造工程,比如艾菲爾鐵塔、飛機,甚至還能建造行星策劃你是還會吸引外來的居住者入住于此,還有小貓、小狗、甚至還有大象也會加入到城市當中。喜歡這款游戲的話就趕緊一起來玩吧~了一些BUG。,本游戲為漢化版本一款采用了第一人稱視覺全新戰斗體系的沙盒類射擊游戲,游戲中會有各種高科技技術含量的東西等著你來下載這個游戲完全沒有目標,你有足夠的工具來構建各種道具然后把它們焊接在一起,以完成自己的設計,無論是火車,火箭,投石車,一切的一切都取決于你。自由度極高的游戲,建設你自己的世界,沒有人能干預你,只有你想不到,沒有它做不到。游戲內容一切盡在你的掌握之中。游戲節奏舒緩從容,畫面清新優雅。帶給你與眾不同的游戲。游戲特色1、多種地貌由你打造2、自由合成海量道具3、親手建造專屬家園4、建造跑車馳騁世界,0.46571940807947176 《像素方塊世界?BlockCrft3D》是一款像素建造類游戲。在開放世界中構建屬于自己的美妙城市。在建造出基本的城市之后,還可以進行宏偉的建造工程,比如艾菲爾鐵塔、飛機,甚至還能建造行星策劃你是還會吸引外來的居住者入住于此,還有小貓、小狗、甚至還有大象也會加入到城市當中。喜歡這款游戲的話就趕緊一起來玩吧~了一些BUG。,像素類游戲大作《沙盒》中文版在玩家們的期待下終于登錄安卓平臺,再也不用對著一堆英文抓狂了,盡情的體驗游戲帶給你的樂趣吧通過令人驚嘆的像素藝術,發揮想象力創造屬于你自己的世界,和各種元素和生物一起游戲,整個世界由你來創造或毀滅,能阻礙你的只有你的想象力利用石頭、水和泥土等基礎的建筑材料開始建造自己的世界,隨后通過種植植物,開墾山脈,創造生命并使用高級工具,來創造更多更復雜的元素。不久之后,你將能夠獲取無機元素如金屬和燈泡等,讓你居住在自己創造的自然與科技共存的世界中。成千上萬種的可能性,天馬行空的環境設計,數不勝數的化學反應。一切盡在你的掌控中更新內容沙盒游戲重新上線,新版本更多內容加入全新合輯《沙子混合3》,包含10大新關卡畫廊功能對中國區玩家開放,玩家上傳自制內容后,有機會得到官方推薦,全世界玩家可見優化了UI顯示,界面更加友好優化了游戲性能,更加流暢,0.45846466916393913

?

總結

以上是生活随笔為你收集整理的P-SIF长文本表示方法的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。