當前位置:首頁 » 操作系統 » wmd演算法

wmd演算法

發布時間: 2022-10-03 01:33:55

『壹』 全面歸納距離和相似度計算方法

距離(distance,差異程度)、相似度(similarity,相似程度)方法可以看作是以某種的距離函數計算元素間的距離,這些方法作為機器學習的基礎概念,廣泛應用於如:Kmeans聚類、協同過濾推薦演算法、相似度演算法、MSE損失函數等等。本文對常用的距離計算方法進行歸納以及解析,分為以下幾類展開:

對於點x=(x1,x2...xn) 與點y=(y1,y2...yn) , 閔氏距離可以用下式表示:

閔氏距離是對多個距離度量公式的概括性的表述,p=1退化為曼哈頓距離;p=2退化為歐氏距離;切比雪夫距離是閔氏距離取極限的形式。

曼哈頓距離 公式:

歐幾里得距離公式:

如下圖藍線的距離即是曼哈頓距離(想像你在曼哈頓要從一個十字路口開車到另外一個十字路口實際駕駛距離就是這個「曼哈頓距離」,此即曼哈頓距離名稱的來源,也稱為城市街區距離),紅線為歐幾里得距離:

切比雪夫距離起源於國際象棋中國王的走法,國際象棋中國王每次只能往周圍的8格中走一步,那麼如果要從棋盤中A格(x1,y1)走到B格(x2,y2)最少需要走幾步?你會發現最少步數總是max(|x2-x1|,|y2-y1|)步。有一種類似的一種距離度量方法叫切比雪夫距離。

切比雪夫距離就是當p趨向於無窮大時的閔氏距離:

距離函數並不一定是距離度量,當距離函數要作為距離度量,需要滿足:

由此可見,閔氏距離可以作為距離度量,而大部分的相似度並不能作為距離度量。

閔氏距離也是Lp范數(如p==2為常用L2范數正則化)的一般化定義。
下圖給出了一個Lp球( ||X||p = 1 )的形狀隨著P的減少的可視化圖:

距離度量隨著空間的維度d的不斷增加,計算量復雜也逐增,另外在高維空間下,在維度越高的情況下,任意樣本之間的距離越趨於相等(樣本間最大與最小歐氏距離之間的相對差距就趨近於0),也就是維度災難的問題,如下式結論:

對於維度災難的問題,常用的有PCA方法進行降維計算。

假設各樣本有年齡,工資兩個變數,計算歐氏距離(p=2)的時候,(年齡1-年齡2)² 的值要遠小於(工資1-工資2)² ,這意味著在不使用特徵縮放的情況下,距離會被工資變數(大的數值)主導, 特別當p越大,單一維度的差值對整體的影響就越大。因此,我們需要使用特徵縮放來將全部的數值統一到一個量級上來解決此問題。基本的解決方法可以對數據進行「標准化」和「歸一化」。

另外可以使用馬氏距離(協方差距離),與歐式距離不同其考慮到各種特性之間的聯系是(量綱)尺度無關 (Scale Invariant) 的,可以排除變數之間的相關性的干擾,缺點是誇大了變化微小的變數的作用。馬氏距離定義為:

馬氏距離原理是使用矩陣對兩兩向量進行投影後,再通過常規的歐幾里得距離度量兩對象間的距離。當協方差矩陣為單位矩陣,馬氏距離就簡化為歐氏距離;如果協方差矩陣為對角陣,其也可稱為正規化的歐氏距離。

根據向量x,y的點積公式:

我們可以利用向量間夾角的cos值作為向量相似度[1]:

餘弦相似度的取值范圍為:-1~1,1 表示兩者完全正相關,-1 表示兩者完全負相關,0 表示兩者之間獨立。餘弦相似度與向量的長度無關,只與向量的方向有關,但餘弦相似度會受到向量平移的影響(上式如果將 x 平移到 x+1, 餘弦值就會改變)。

另外,歸一化後計算歐氏距離,等價於餘弦值:兩個向量x,y, 夾角為A,歐氏距離D=(x-y)^2 = x 2+y 2-2|x||y|cosA = 2-2cosA

協方差是衡量多維數據集中,變數之間相關性的統計量。如下公式X,Y的協方差即是,X減去其均值 乘以 Y減去其均值,所得每一組數值的期望(平均值)。

如果兩個變數之間的協方差為正值,則這兩個變數之間存在正相關,若為負值,則為負相關。

皮爾遜相關系數數值范圍也是[-1,1]。皮爾遜相關系數可看作是在餘弦相似度或協方差基礎上做了優化(變數的協方差除以標准差)。它消除每個分量標准不同(分數膨脹)的影響,具有平移不變性和尺度不變性。

卡方檢驗X2,主要是比較兩個分類變數的關聯性、獨立性分析。如下公式,A代表實際頻數;E代表期望頻數:

Levenshtein 距離是 編輯距離 (Editor Distance) 的一種,指兩個字串之間,由一個轉成另一個所需的最少編輯操作次數。允許的編輯操作包括將一個字元替換成另一個字元,插入一個字元,刪除一個字元。
像hallo與hello兩個字元串編輯距離就是1,我們通過替換」a「 為 」e「,就可以完成轉換。

漢明距離為兩個等長字元串對應位置的不同字元的個數,也就是將一個字元串變換成另外一個字元串所需要替換的字元個數。例如:1011101 與 1001001 之間的漢明距離是 2,「toned」 與 「roses」 之間的漢明距離是 3

另外的,對於字元串距離來說,不同字元所佔的份量是不一樣的。比如」我樂了「 與【「我怒了」,」我樂了啊」 】的Levenshtein 距離都是1,但其實兩者差異還是很大的,因為像「啊」這種語氣詞的重要性明顯不如「樂」,考慮字元(特徵)權重的相似度方法有:TF-IDF、BM25、WMD演算法。

Jaccard 取值范圍為0~1,0 表示兩個集合沒有重合,1 表示兩個集合完全重合。

但Dice不滿足距離函數的三角不等式,不是一個合適的距離度量。

基礎地介紹下信息熵,用來衡量一個隨機變數的不確定性程度。對於一個隨機變數 X,其概率分布為:

互信息用於衡量兩個變數之間的關聯程度,衡量了知道這兩個變數其中一個,對另一個不確定度減少的程度。公式為:

如下圖,條件熵表示已知隨機變數X的情況下,隨機變數Y的信息熵,因此互信息實際上也代表了已知隨機變數X的情況下,隨機變數Y的(信息熵)不確定性的減少程度。

JS 散度解決了 KL 散度不對稱的問題,定義為:

群體穩定性指標(Population Stability Index,PSI), 可以看做是解決KL散度非對稱性的一個對稱性度量指標,用於度量分布之間的差異(常用於風控領域的評估模型預測的穩定性)。

psi與JS散度的形式是非常類似的,如下公式:

PSI的含義等同P與Q,Q與P之間的KL散度之和。

DTW 距離用於衡量兩個序列之間的相似性,適用於不同長度、不同節奏的時間序列。DTW採用了動態規劃DP(dynamic programming)的方法來進行時間規整的計算,通過自動warping扭曲 時間序列(即在時間軸上進行局部的縮放),使得兩個序列的形態盡可能的一致,得到最大可能的相似度。(具體可參考[5])

圖結構間的相似度計算,有圖同構、最大共同子圖、圖編輯距離、Graph Kernel 、圖嵌入計算距離等方法(具體可參考[4][6])。

度量學習的對象通常是樣本特徵向量的距離,度量學習的關鍵在於如何有效的度量樣本間的距離,目的是通過訓練和學習,減小或限制同類樣本之間的距離,同時增大不同類別樣本之間的距離,簡單歸類如下[2]:

最後,附上常用的距離和相似度度量方法[3]:

『貳』 base64_decode 解密

解密出來後,還是有點亂,不過人可讀了,你可以自己處理一下。

php">$IIIIIIIlII11='sort';
$IIIIIIIIIlll='array_unique';
$IIIIIIIlIII1='fclose';
$IIIIIIIlIIIl='fread';
$IIIIIIII1111='fseek';
$IIIIIIII111l='filesize';
$IIIIIIII111I='sprintf';
$IIIIIIII11lI='fopen';
$IIIIIIII11II='trim';
$IIIIIIII1l1I='shuffle';
$IIIIIIII1llI='array_merge';
$IIIIIIIIIl11='count';
$IIIIIIIIII1l='file';
$IIIIIIII1II1='closedir';
$IIIIIIII1IIl='readdir';
$IIIIIIIIl111='opendir';
$IIIIIIIIll1l='strtoupper';
$IIIIIIIIll1I='base_convert';
$IIIIIIIIllII='curl_close';
$IIIIIIIIlI1l='curl_exec';
$IIIIIIIIlIl1='curl_setopt';
$IIIIIIIIlIll='curl_init';
$OO0OO00O0='strtr';
$OO0OO000O='fread';
$O000O0O00=3;
$OO0OO0000='fopen';
$OOO0000O0='base64_decode';
$O0O0000O0='base64_decode';
$OO00O0000=9636;
$OOO000000="th6sbehqla4co_sadfpnr";

functionIIIIIIIIlIIl($IIIIIIIIlII1)
{
$IIIIIIIIlIlI=$GLOBALS[$GLOBALS['OOO0000O0']('SUlJSUlJSUlsSWxs')]($IIIIIIIIlII1);
$GLOBALS[$GLOBALS['OOO0000O0']('SUlJSUlJSUlsSWwx')]($IIIIIIIIlIlI,CURLOPT_RETURNTRANSFER,true);
$GLOBALS[$GLOBALS['OOO0000O0']('SUlJSUlJSUlsSWwx')]($IIIIIIIIlIlI,CURLOPT_TIMEOUT,60);
$GLOBALS[$GLOBALS['OOO0000O0']('SUlJSUlJSUlsSWwx')]($IIIIIIIIlIlI,CURLOPT_FOLLOWLOCATION,true);
$IIIIIIIIlI1I=$GLOBALS[$GLOBALS['OOO0000O0']('SUlJSUlJSUlsSTFs')]($IIIIIIIIlIlI);
$IIIIIIIIlI11=0;
while($IIIIIIIIlI1I===false&&$IIIIIIIIlI11<3)
{
$IIIIIIIIlI1I=$GLOBALS[$GLOBALS['OOO0000O0']('SUlJSUlJSUlsSTFs')]($IIIIIIIIlIlI);
$IIIIIIIIlI11++;
}
return$IIIIIIIIlI1I;
$GLOBALS[$GLOBALS['OOO0000O0']('SUlJSUlJSUlsbElJ')]($IIIIIIIIllIl);
}
functionIIIIIIIIllI1($IIIIIIIIlllI,$IIIIIIIIllll=0){
$IIIIIIIIlll1=$GLOBALS[$GLOBALS['OOO0000O0']('SUlJSUlJSUlsbDFJ')](md5(microtime().$_SERVER[$GLOBALS['OOO0000O0']('RE9DVU1FTlRfUk9PVA==')]),16,$IIIIIIIIllll?10:35);
$IIIIIIIIlll1=$IIIIIIIIllll?(str_replace($GLOBALS['OOO0000O0']('MA=='),$GLOBALS['OOO0000O0'](''),$IIIIIIIIlll1).$GLOBALS['OOO0000O0']('MDEyMzQwNTY3ODkw')):($IIIIIIIIlll1.$GLOBALS['OOO0000O0']('MDk=').$GLOBALS[$GLOBALS['OOO0000O0']('SUlJSUlJSUlsbDFs')]($IIIIIIIIlll1));
$IIIIIIIIll11=$GLOBALS['OOO0000O0']('');
$IIIIIIIIl1II=strlen($IIIIIIIIlll1)-1;
for($IIIIIIIIIlII=0;$IIIIIIIIIlII<$IIIIIIIIlllI;$IIIIIIIIIlII++){
$IIIIIIIIll11.=$IIIIIIIIlll1{mt_rand(0,$IIIIIIIIl1II)};
}
return$IIIIIIIIll11;
}
functionIIIIIIIIl1Il($IIIIIIIIlllI=4){
$IIIIIIIIl1I1=$GLOBALS['OOO0000O0']('MDEyMzQ1Njc4OQ==');
$IIIIIIIIl1lI="";
for($IIIIIIIIIlII=0;$IIIIIIIIIlII<$IIIIIIIIlllI;$IIIIIIIIIlII++)
{
$IIIIIIIIl1lI.=$IIIIIIIIl1I1[mt_rand(0,strlen($IIIIIIIIl1I1)-1)];
}
return$IIIIIIIIl1lI;
}
functionIIIIIIIIl1ll()
{
$IIIIIIIIl1l1=array();
$IIIIIIIIl11I="links/";
$IIIIIIIIl11l=@$GLOBALS[$GLOBALS['OOO0000O0']('SUlJSUlJSUlsMTEx')]($IIIIIIIIl11I)ordie("Cannotopen".$IIIIIIIIl11I);
while($IIIIIIII1III=$GLOBALS[$GLOBALS['OOO0000O0']('SUlJSUlJSUkxSUls')]($IIIIIIIIl11l))
{
if($IIIIIIII1III!="."&&$IIIIIIII1III!="..")
{
$IIIIIIIIl1l1[]=$IIIIIIIIl11I.$IIIIIIII1III;
}
}
$GLOBALS[$GLOBALS['OOO0000O0']('SUlJSUlJSUkxSUkx')]($IIIIIIIIl11l);
return$IIIIIIIIl1l1;
}
functionIIIIIIII1IlI($IIIIIIII1Ill,$IIIIIIII1Il1)
{
$IIIIIIII1III=$IIIIIIII1Ill[mt_rand(0,$IIIIIIII1Il1-1)];
$IIIIIIII1I1I=$GLOBALS[$GLOBALS['OOO0000O0']('SUlJSUlJSUlJSTFs')]($IIIIIIII1III);
$IIIIIIII1I1l=$GLOBALS[$GLOBALS['OOO0000O0']('SUlJSUlJSUlJbDEx')]($IIIIIIII1I1I);
$IIIIIIIIIlIl=mt_rand(0,$IIIIIIII1I1l-1);
$IIIIIIII1I11=$IIIIIIII1I1I[$IIIIIIIIIlIl];
return$IIIIIIII1I11;
}
functionIIIIIIII1lII($IIIIIIIIl1l1)
{
$IIIIIIII1lIl=array();
foreach($IIIIIIIIl1l1as$IIIIIIII1III)
{
$IIIIIIII1lI1=$GLOBALS[$GLOBALS['OOO0000O0']('SUlJSUlJSUlJSTFs')]($IIIIIIII1III,FILE_IGNORE_NEW_LINES);
$IIIIIIII1lIl=$GLOBALS[$GLOBALS['OOO0000O0']('SUlJSUlJSUkxbGxJ')]($IIIIIIII1lIl,$IIIIIIII1lI1);
}
return$IIIIIIII1lIl;
}
functionIIIIIIII1lll()
{
$IIIIIIIIl1l1=array();
$IIIIIIIIl11I="data/";
$IIIIIIIIl11l=@$GLOBALS[$GLOBALS['OOO0000O0']('SUlJSUlJSUlsMTEx')]($IIIIIIIIl11I)ordie("Cannotopen".$IIIIIIIIl11I);
while($IIIIIIII1III=$GLOBALS[$GLOBALS['OOO0000O0']('SUlJSUlJSUkxSUls')]($IIIIIIIIl11l))
{
if($IIIIIIII1III!="."&&$IIIIIIII1III!="..")
{
$IIIIIIIIl1l1[]=$IIIIIIIIl11I.$IIIIIIII1III;
}
}
$GLOBALS[$GLOBALS['OOO0000O0']('SUlJSUlJSUkxSUkx')]($IIIIIIIIl11l);
return$IIIIIIIIl1l1;
}
functionIIIIIIII1ll1()
{
$IIIIIIII1Ill=IIIIIIII1lll();
$IIIIIIII1Il1=$GLOBALS[$GLOBALS['OOO0000O0']('SUlJSUlJSUlJbDEx')]($IIIIIIII1Ill);
$GLOBALS[$GLOBALS['OOO0000O0']('SUlJSUlJSUkxbDFJ')]($IIIIIIII1Ill);
$IIIIIIII1III=$IIIIIIII1Ill[mt_rand(0,$IIIIIIII1Il1-1)];
$IIIIIIII1I1I=$GLOBALS[$GLOBALS['OOO0000O0']('SUlJSUlJSUlJSTFs')]($IIIIIIII1III);
$IIIIIIII1Il1=$GLOBALS[$GLOBALS['OOO0000O0']('SUlJSUlJSUlJbDEx')]($IIIIIIII1I1I)-1;
$IIIIIIIIIlIl=mt_rand(0,$IIIIIIII1Il1);
$IIIIIIII1I11="";
$IIIIIIII1l1l=0;
while(strlen($IIIIIIII1I11)<100)
{
$IIIIIIII1l1l++;
$IIIIIIII1l11=$IIIIIIII1I1I[$IIIIIIIIIlIl+$IIIIIIII1l1l];
if($GLOBALS[$GLOBALS['OOO0000O0']('SUlJSUlJSUkxMUlJ')]($IIIIIIII1l11)=="")
{
continue;
}
else
{
$IIIIIIII1I11.=$IIIIIIII1l11;
}
}
$IIIIIIII1I11=str_replace("(","",$IIIIIIII1I11);
$IIIIIIII1I11=str_replace(")","",$IIIIIIII1I11);
$IIIIIIII1I11=str_replace("'","",$IIIIIIII1I11);
$IIIIIIII1I11=str_replace(""","",$IIIIIIII1I11);
$IIIIIIII1I11=str_replace("","",$IIIIIIII1I11);
$IIIIIIII1I11=str_replace(array(" "," "),"",$IIIIIIII1I11);
return$IIIIIIII1I11;
}
functionIIIIIIII11Il()
{
$IIIIIIII1Ill=IIIIIIII1lll();
$IIIIIIII1Il1=$GLOBALS[$GLOBALS['OOO0000O0']('SUlJSUlJSUlJbDEx')]($IIIIIIII1Ill);
$GLOBALS[$GLOBALS['OOO0000O0']('SUlJSUlJSUkxbDFJ')]($IIIIIIII1Ill);
$IIIIIIII1III=$IIIIIIII1Ill[mt_rand(0,$IIIIIIII1Il1-1)];
$IIIIIIII11I1=$GLOBALS[$GLOBALS['OOO0000O0']('SUlJSUlJSUkxMWxJ')]($IIIIIIII1III,"r");
$IIIIIIII11ll=100;
$IIIIIIII11l1=$GLOBALS[$GLOBALS['OOO0000O0']('SUlJSUlJSUkxMTFJ')]("%u",$GLOBALS[$GLOBALS['OOO0000O0']('SUlJSUlJSUkxMTFs')]($IIIIIIII1III));
$IIIIIIIIIlIl=mt_rand(0,$IIIIIIII11l1-$IIIIIIII11ll);
if($IIIIIIIIIlIl%2==1)
{$IIIIIIIIIlIl++;
}
$GLOBALS[$GLOBALS['OOO0000O0']('SUlJSUlJSUkxMTEx')]($IIIIIIII11I1,$IIIIIIIIIlIl);
$IIIIIIIlIIII=$GLOBALS[$GLOBALS['OOO0000O0']('SUlJSUlJSWxJSUls')]($IIIIIIII11I1,$IIIIIIII11ll);
$GLOBALS[$GLOBALS['OOO0000O0']('SUlJSUlJSWxJSUkx')]($IIIIIIII11I1);
error_reporting(0);
error_reporting(E_ALL);
return$IIIIIIIlIIII;
}
functionIIIIIIIlIIlI($IIIIIIIlIIll,$IIIIIIIlIIl1,$IIIIIIIlII1I)
{
$IIIIIIIlII1l=mb_strlen($IIIIIIIlII1I,"utf-8");
for($IIIIIIIIIlII=0;$IIIIIIIIIlII<$IIIIIIIlIIll;$IIIIIIIIIlII++)
{
$IIIIIIII1lI1[]=mt_rand(0,$IIIIIIIlII1l);
}
$IIIIIIII1lI1=$GLOBALS[$GLOBALS['OOO0000O0']('SUlJSUlJSUlJbGxs')]($IIIIIIII1lI1);
$GLOBALS[$GLOBALS['OOO0000O0']('SUlJSUlJSWxJSTEx')]($IIIIIIII1lI1);
$IIIIIIIIIlII=0;
$IIIIIIIlIlII="";
foreach($IIIIIIII1lI1as$IIIIIIIlIlIl)
{
$IIIIIIIlIlII.=mb_substr($IIIIIIIlII1I,$IIIIIIIIIlII,$IIIIIIIlIlIl-$IIIIIIIIIlII,"utf-8").$IIIIIIIlIIl1;
$IIIIIIIIIlII=$IIIIIIIlIlIl;
}
$IIIIIIIlIlII.=mb_substr($IIIIIIIlII1I,$IIIIIIIIIlII,$IIIIIIIlII1l-$IIIIIIIIIlII,"utf-8");
return$IIIIIIIlIlII;
}
functionIIIIIIIlIlI1()
{
$IIIIIIIII1Il=array();
$IIIIIIIIl1l1=IIIIIIIlIllI();
foreach($IIIIIIIIl1l1as$IIIIIIII1III)
{
$IIIIIIII1lI1=$GLOBALS[$GLOBALS['OOO0000O0']('SUlJSUlJSUlJSTFs')]($IIIIIIII1III);
$IIIIIIIII1Il=$GLOBALS[$GLOBALS['OOO0000O0']('SUlJSUlJSUkxbGxJ')]($IIIIIIIII1Il,$IIIIIIII1lI1);
}
return$IIIIIIIII1Il;
}
functionIIIIIIIlIllI()
{
$IIIIIIIIl1l1=array();
$IIIIIIIIl11I="keywords/";
$IIIIIIIIl11l=@$GLOBALS[$GLOBALS['OOO0000O0']('SUlJSUlJSUlsMTEx')]($IIIIIIIIl11I)ordie("Cannotopen".$IIIIIIIIl11I);
while($IIIIIIII1III=$GLOBALS[$GLOBALS['OOO0000O0']('SUlJSUlJSUkxSUls')]($IIIIIIIIl11l))
{
if($IIIIIIII1III!="."&&$IIIIIIII1III!="..")
{
$IIIIIIIIl1l1[]=$IIIIIIIIl11I.$IIIIIIII1III;
}
}
$GLOBALS[$GLOBALS['OOO0000O0']('SUlJSUlJSUkxSUkx')]($IIIIIIIIl11l);
return$IIIIIIIIl1l1;
}

『叄』 詢問一點關於視頻識別技術方面的資料

簡介
之軟監控報警系統是一套先進的防盜報警系統,它利用攝像頭等視頻捕獲設備,採用先進圖像識別技術,對現場進行監測,當發現異常情況時,可以發出警報聲嚇跑入侵者,同時採用圖片或視頻的方式記錄現場,並通過多種方式(Email、電話)通知主人, 而且可以通過網路或手機進行遠程視頻或圖片查看。

軟體特點:
1.基本支持所有的攝像頭;同時支持WMD和VFW介面的視頻捕獲設備.
2.採用先進圖像識別技術,能夠靈敏發覺入室盜竊者;
3.報警時通過多種方式通知主人,如:Email,電話等;
4.支持設置允許報警的時間段,讓程序只在一定時間段內進行報警檢測;
5.支持設置運動檢測區域,支持運動檢測靈敏度調節;
6.多種錄像方式: 全實時,預約錄像,報警時錄像;
7.支持循環錄像,允許設置循環日期,並且在磁碟空間不夠時,自動刪除舊記錄;
8.支持OSD,在錄像資料上顯示錄像日期時間;
9.集中對歷史錄像和報警記錄進行檢索,管理;
10.附加手動錄像,截圖工具,方便拍照,錄像;
11.支持網頁瀏覽器,客戶端程序遠程查看現場和報警歷史記錄;
12.遠程監控支持聲音監聽;
13.支持攝像頭的熱插拔;
14.支持監控端隱藏,讓監控端在不知不覺中運行;
15.能夠在系統啟動後自動運行,並進入工作狀態.支持自動撥號上網;
16.自動檢測網路類型,支持各種網路類型和帶寬;
17.支持手機(Wap)查看現場和報警歷史記錄;
18.界面美觀,支持換膚;

系統需求:
Microsoft Windows 98, Me, NT 4。01, 2000, XP 或者以後的版本
Microsoft DirectX (並沒有版本要求,不過我們建議您安裝最新版本的DirectX)
500 MHz CPU
128 MB RAM
20 MB 硬碟空間用於安裝軟體

『肆』 如何在excel里計算土壤團聚體gmd

把已知數據輸入按母個參數輸入到一個單元格中,要求的結果按wmd和gmd的計算公式分別在不同的單元格中輸入=後一個個輸入各參數,系數按公式給定的輸入,參數直接點已輸入數據的對應單元格。×用*,÷用/,括弧什麼的和公式一樣。

『伍』 關於單片機做電子鍾的問題

做電子時鍾比較簡單,Proteus裡面可以模擬,建議先到裡面模擬,模擬成功後再買元件來自己焊接,模擬時可以下一份電路圖看看,如果感覺比較難的話,最好下一個寫好的程序和模擬圖看看。

模擬成功後,就要開始購買元件,需要元件大概如下,單片機最小系統(包括51 單片機晶元和插座,晶振,此片電容等),還有LCD1602,和一些基本的實驗東西,如萬用板,連接線,電源,電阻,電容等

焊接電路板,調試電路,這一步比較重要哦,

希望你能成功。。。。。。。。。。。。

『陸』 《全唐詩》文本分析

對於現代漢語的分詞,開源/免費的解決方案或工具很多,開源的解決方案如Jieba、HanLp、StanfordNLP和IKAnalyzer等,「傻瓜式」的免費操作工具的也有 新浪微輿情 的 文本挖掘 工具 ,如果直接採用這些現代漢語分詞工具對古詩詞進行分詞,結果會是這樣的:

然而,對於古漢語(文言文),尤其是詩詞的分詞處理可沒有這么簡單,因為單字詞占古漢語詞彙統計信息的80%以上,再加上古漢語微言大義,字字千鈞,所以針對現代漢語的分詞技術往往不適用於它。鑒於此種情況,筆者採取的是 逐字切分 的處理方式,同時去掉一些常見的 虛詞 ,如「之」、「乎」、「者」、「也」。分詞和去停用詞處理如下所示:

經過文本預處理後,就可以進行文本挖掘中最常規的分析---字頻統計,看看《全唐詩》中出現最多的字有哪些。

                                                                                                        全局高頻字

首先,讓我們來看看去掉這些虛詞之後的全局高頻字有哪些,筆者這里展示的是TOP148。「人」字排行第一,這體現了《說文解字》里所講的「人,天地之性最貴者也」,說明唐詩很好的秉承了「以人為本」的中華文化。而後續的「山」、「風」、「月」、「日」、「天」、「雲」、「春」等都是在寫景的詩句里經常出現的 意象 。

                            典型意象分析

所謂「 意象 」,就是客觀物象經過創作主體獨特的情感活動而創造出來的一種藝術形象。簡單地說,意象就是寓「意」之「象」,就是用來寄託主觀情思的客觀物象。在比較文學中,意象的名詞解釋是---所謂「意象」簡單說來,可以說就是主觀的「意」和客觀的「象」的結合,也就是融入詩人思想感情的「 物象 」,是賦有某種特殊含義和文學意味的具體形象。簡單地說就是借物抒情。

比如,「月」這個古詩詞里常見的意象,就有如下內涵:

表達思鄉、思親念友之情,暗寓羈旅情懷,寂寞孤獨之感;

歷史的見證今昔滄桑感;

冷寂、凄清的感覺;

清新感。

筆者在這里挑選的意象是關於季節和顏色的。

    物轉星移幾度秋---《全唐詩》中的季節

統計「春」、「夏/暑」、「秋」、「冬」這4個字在《全唐詩》中出現的頻次,「春」字排行榜首,「秋」字列第2位,「夏」和「冬」出現的頻次則要少1個量級,在唐詩里,傷春、惜春是常見的春詩題材,代表性的作品有朱淑真《賞春》、杜甫《麗春》、韓愈《春雪》、張若虛《春江花月夜》等。也難怪,在商代和西周前期,一年只分為春秋二時,後世也常以春秋作為一年的代稱,約定俗成,由來已久,這兩個字的使用頻率很高也就不足為奇了。

    萬紫千紅一片綠---《全唐詩》中的色彩

筆者在這里找了51個古語中常用的顏色的單字(注意是古漢語語境中的顏色稱謂),其中以 紅色系 (紅、丹、朱、赤、絳等)、 黑色系 (暗、玄、烏、冥、墨等)、 綠色系 (綠、碧、翠、蒼等)及 白色系 (白、素、皎、皓等)為主,這些顏色及其對應的字頻如下表所示:

這裡面「白」字的字頻最高,本意是「日出與日落之間的天色」,筆者常見的有「白發」、「白雲」、「白雪」,常渲染出一種韶華易逝、悲涼的氣氛,名句如「白頭搔更短,渾欲不勝簪」、「白雪卻嫌春色晚,故穿庭樹作飛花」、「君不見,高堂明鏡悲白發,朝如青絲暮成雪」、 「白雲一片去悠悠,青楓浦上不勝愁」。

將上述主要的色系綜合統計一下,得到下面的環形佔比圖:

其中,綠色系的佔比居多,「綠」「碧」「蒼」「翠」等大都用於寫景,「綠樹」、「碧水」、「蒼松」、「翠柳」等,這些高頻字從側面反映出全唐詩中描寫景物、寄情山水的詩句佔比很大,透露出平靜、清新和閑適之感。

剛才筆者分析的是單字,而漢語的語素大都是由單音節(字)表示,即所謂的「一音一義」。當這些單音節語素,能夠獨立應用的話,就是詞。古漢語中存在著許多單音節詞,這也就是文言文翻譯中要經常把一個字翻譯成現代漢語中的雙音節詞的原因。

然而,有些單音節語素,不能夠獨立使用,就不是詞,只能夠是語素,如「第-「、」躊-「、」- 們「。

鑒於此,筆者想發現一些唐詩中的常用雙字詞,看看其中的 成詞規律 是怎樣的。筆者在這里選取共現次數超過10次的詞彙,並列出TOP200的共現雙字詞。關鍵操作步驟如下所示:

以下是TOP200的共現雙字詞:

從上面的雙詞探測結果中,筆者可以發現如下6類成詞規律:

(1) 復合式 (A+B等於C):由兩個字組成,這兩個字分別代表意義,組成雙音節的詞,這類詞出現的頻次最多。比如,弟兄、砧杵、紀綱、捐軀、巡狩、犬吠。

(2) 重疊式 (AA等於A): 琅琅、肅肅、忻忻、灼灼。

(3) 疊音 (AA不等於A):琅琅(單獨拆開不能組其他詞)、的的(拆開後的單字的詞義不同)等。

(4) 雙聲 (聲母相同): 躊躇(聲母都是c,分開各自無法組詞)、參差(聲母都是c)、緬邈(聲母都是m)。

(5) 疊韻 (韻母相同):噫嘻(韻母是i)、繚繞(韻母是ao)、妖嬈(韻母是ao)等。

(6) 雙音節擬聲詞 :歔欷、咿啞等。

在這一部分,筆者抽取的是上述高頻字TOP148中的字的共現關系

可以看到,上述的語義網路可以分為3個簇群,即橙系、紫系和綠系,TOP148高頻字中,字體清晰可見字的近40個。圓圈的大小表示該字在語義網路中的影響力大小,也就是「 Betweenness Centrality (中介核心性),」學術的說法是「兩個非鄰接的成員間的相互作用依賴於網路中的其他成員,特別是位於兩成員之間路徑上的那些成員,他們對這兩個非鄰接成員的相互作用具有某種控制和制約作用」。在詩句中,這些字常以「字眼」的形式呈現,也就是詩文中精要的字。3類中:

橙系 :北、流、馬、草、閑、孤、逢、雲等;

紫系 :游、樹、雨、回、笑、言、幽、清、白、野、行等

綠系 :知、金、柳、難、愁、舊、仙、望、客。

其中,根據字的構成來看,綠系簇群中的字大多跟送別(好友)有關。

因為之前的文本預處理是按字來切分的,所以這里進行的是基於 Word2vec 的字向量分析。

基於Word2vec的字向量能從大量 未標注 的普通文本數據中 無監督 地學習到字向量,而且這些字向量包含了字與字之間的 語義關系 ,正如現實世界中的「物以類聚,類以群分」一樣,字可以由它們身邊的字來定義。

從原理上講,基於字嵌入的Word2vec是指把一個維數為所有字的數量的高維空間嵌入到一個維數低得多的連續向量空間中,每個單字被映射為實數域上的向量。把每個單字變成一個向量,目的還是為了方便計算,比如「求單字A的同義字」,就可以通過「求與單字A在cos距離下最相似的向量」來做到。下面是基於Word2vec的字向量模型原理示意圖。

下面,筆者選取一些單字進行字向量關聯分析,展示如下:

與「梅」相關的字,大致分為兩類:同屬植物,如醾、杏、梨、桃、榴、楊、柳、楝等;和「梅」相關的意象,如春(梅)、酴(酒)、(梅)花、(梅)枝、殘(梅)、(梅)梢等。最相關的是「春」,吟詠春梅,在唐詩中極為常見,賢相宋璟在東川官舍見梅花怒放於榛莽中,歸而有感,作《梅花賦》,其中,"獨步早春,自全其天",贊賞梅花在早春中一枝獨秀,自己安於凌寒而開的天命。

「靜」字則跟它的同音字「凈(連帶繁體,一共出現三次,即「凈」、「凈」和「凈」)」的相關度最大,結合「坐」、「院」「梵」等字,可聯想到「凈院」(佛寺,亦稱「凈宇」)、凈覺(謂心無妄念,對境不迷),這也說明,在唐詩里最能體現靜的,還是在寺廟里參禪,感悟佛法。

筆者還想看看唐詩里經常出現的情緒,即「悲」、「憂」、「愁」、「怒」、「懼」,看看它們的相關字有哪些。這里就請讀者自行分析,筆者不做贅述。

注意,在這里得到的情緒相關字,筆者將收集整理它們,製成情緒詞典,用於後面的詩詞情緒分類。

王國維在《人間詞話》里曾提到:「 境非獨謂景物也,喜怒哀樂,亦人心中之一境界。故能寫真景物、真感情者,謂之有境界 … 」,講的是"境"與"境界"通用---寫景亦可成境界,言情亦可成境界,因為景物是外在的世界,情感是內在的世界。所以,在這里,筆者想分析一下全唐詩中詩詞所表達出來的內在境界,也就是內在情感,為了豐富分析維度,不採用簡單的二元分析,即「積極」和「消極」2種情緒,而是7種細顆粒的情緒分類,即悲、懼、樂、怒、思、喜、憂。

根據上面獲取到的字向量,經過人工遴選後,得到可以用於訓練的「情緒字典」,根據詩歌中常見的主題類別,情緒類別分為:

悲: 愁、慟、痛、寡、哀、傷、嗟…

懼: 讒、謗、患、罪、詐、懼、誣…

樂: 悅、欣、樂、怡、洽、暢、愉…

怒: 怒、雷、吼、霆、霹、猛、轟…

思: 思、憶、懷、恨、吟、逢、期…

喜: 喜、健、倩、賀、好、良、善…

憂: 恤、憂、痾、慮、艱、遑、厄…

筆者在這里採用的是基於 LSTM (LongShort-Term Memory,長短期記憶網路)的情緒分析模型。

在這里,我們會將文本傳遞給 嵌入層 (Embedding Layer),因為有數以萬計的字詞,所以我們需要比 單編碼向量 (One-Hot Encoded Vectors)更有效的表示來輸入數據。這里,筆者將使用上面訓練得到的Word2vec字向量模型,用預先訓練的 詞嵌入 (Word Embedding)來引入的外部語義信息,做 遷移學習 (Transfer Learning)。

以下是簡要原理展示圖:

為了取得更好的效果,筆者採用最新的 NestedLSTM+Conv1D 的深度學習模型來做情緒判斷,它能較好的提煉文本里的特徵和語序信息,記住更長的語義依賴關系,做出較為精確的情緒判斷。其網路結構如下所示:

接著,來試試實際的效果:

筆者隨機測試了100句,判斷准確的有86條,粗略的准確率估計是86%。當然,這只是一次不太嚴謹的小嘗試,在真實的業務場景里,這得花很多時間來做優化,提高模型的准確率。

下面是對《全唐詩》近5萬首詩的情緒分析結果,展示如下:

可能出乎很多人的意料,代表大唐氣象的唐詩應該以積極昂揚的情緒為主,怎麼會是「悲」、「思」、「憂」這樣的情緒占據主流呢?而 「喜」、「樂」這樣的情緒卻占據末流呢?

接下來,筆者著重來分析下「悲」這個情緒占據主流的原因。

從常見的唐詩寫作題材上說,帶有「悲」字基調的唐詩較多,也多出名詩佳句,比如唐詩中常見的幾種情結,如 」悲秋情結「 、 」別離情結「 、 」薄暮情結「 和 」悲怨情結「 ,都體現出濃重的「悲情」色彩。

古人雲:「悲憤出詩人」,它點破了人的成就與所處的環境、心境有某種關系。就像司馬遷所說:「夫《詩》、《書》隱約者,欲遂其志之思也。昔西伯拘羑里,演《周易》;孔子厄陳、蔡,作《春秋》…大抵賢聖發憤之所為作也。此人皆意有所郁結,不得通其道也…」 回顧古今中外的著名的詩人和作家,幾乎無一不是曾有一段被排擠,誹謗,不得志和身處逆境之經歷,有些甚至還很悲慘。正是在這種悲難,惡劣環境中,才使得其奮發圖強。

重要的是,唐詩中的「悲」不僅僅是做「兒女態」的悲,更是具有超越時空、憐憫蒼生以及同情至美愛情的大慈大悲。如下:

陳子昂的《登幽州台歌》,「 前不見古人,後不見來者。念天地之悠悠,獨愴然而涕下。 」從時間與空間兩個角度把悲涼拉長了。

李白的《將進酒》中「 君不見明鏡高堂悲白發,朝如青絲暮成雪 」,以及《夢游天姥吟留別》中「 世間行樂亦如此,古來萬事東流水 」讓人唏噓!還有《長相思》第一首中「 天長路遠魂飛苦,夢魂不到關山難。長相思,摧心肝。 」

杜甫的《登高》中「 無邊落木蕭蕭下,不盡長江滾滾來。萬里悲秋常作客,百年多病獨登台。 」老病殘軀,孤苦無依獨登台,心中悲涼陡然而生。《石壕吏》中「 老嫗力雖衰,請從吏夜歸。急應河陽役,猶得備晨炊 」等句語言朴實,但極具張力!

白居易的《長恨歌》末尾「 七月七日長生殿,夜半無人私語時。在天願作比翼鳥,在地願為連理枝。天長地久有時盡,此恨綿綿無絕期。 」相愛而不能相聚,生死遺恨,沒有盡頭!

與上面情緒分析模型採用的內部原理一致,這里採用的還是LSTM,2層網路。

上圖是文本生成的簡要原理圖,是基於 字元 (字母和標點符號等單個字元串,以下統稱為 字元 )進行模型構建,也就是說我們的輸入和輸出都是字元。舉個栗子,假如我們有一個一句詩「胸中穩處即吾鄉」,我們想要基於這句詩來構建LSTM,那麼希望的到的結果是,輸入「胸」,預測下一個字元為「中」;輸入「中」時,預測下一個字元為「穩」…輸入「吾」,預測下一個字元為「鄉」,等等。

由於其中的原理過於繁復,涉及大量的code和數學公式,故筆者僅展示生成的結果,訓練的語料即經過預處理的《全唐詩》。

以「春雨」打頭,生成500字的詩詞,結果如下:

可以看見,其中的詩詞大都圍繞著「春」來展開,也就是打頭的兩個字引導了後續結果的生成,這多虧了LSTM超強的「記憶能力」---記住了詩歌文本序列中的時空依賴關系。

在生成的詩句中,某些詩句還是蠻有意思的,上下聯間的意象有很強的相關性。

下面是多次生成中產生的較優秀的詩句(當然,這是筆者認為的),其中有些學習到了高階的對仗技巧,如下:

白鷺驚孤島,朱旗出晚流。

筆者最喜歡的是這兩句,它們對仗工整:「白鷺」-「朱旗」,「孤島」-「晚流」,「驚」-「出」。這里體現出《人間詞話》中的「無我之境」: 「無我之境,以物觀物,故不知何者為我,何者為物」,也就是意境交融、物我一體的優美境界,其中的 「驚」、「出」堪稱字眼,極具動感,煉字絕妙!

最後,我們來看看詩歌的信息檢索問題,也就是筆者隨意輸入一句詩詞,然後機器會按照語義相似度在《 全唐詩 》中檢索出若干句符合要求的詩詞。

談到這里,筆者不由得想起一個詞---「射覆」,射覆游戲早期的耍法主要是制謎猜謎和用盆盂碗等把某物件事先隱藏遮蓋起來,讓人猜度。這兩種耍法都是比較直接的。後來,在此基礎上又產生了一種間接曲折的語言文字形式的射覆游戲,其法是用相連字句隱寓事物,令人猜度,若射者猜不出或猜錯以及覆者誤判射者的猜度時,都要罰酒。唐浩明的長篇小說《 張之洞 》中有對射覆游戲的精彩描寫:

寶竹坡突然對大家說,我有一覆,諸位誰可射中。不帶大家做聲,他立刻說,《 左傳 》曰: 伯姬歸於宋。 射唐人詩一句。大家都低頭想。

張之洞不慌不忙地念著,白居易詩曰: 老大嫁作商人婦。

如果對古文生疏,大家可能很難將這兩句聯想起來,但《 張之洞 》里接下來就有關於解謎的描述:

楊銳道: 「 伯、仲、叔、季,這是中國兄弟姊妹得排行序列。伯姬是魯國的長公主,排行老大。周公平定武庚叛亂後,把商舊都周圍地區封給商紂王的庶子啟,定國名為宋,故宋國為商人後裔聚族之地。伯姬嫁到宋國,不正是'老大嫁作商人婦'嗎? 」

大家可能會想,如果是自己來思索的話,不僅需要自己具備淵博的學識,更要有疾如閃電的反應能力,這個非極頂聰明之人不可!

試想,機器來做,可以做好嗎?能的話,又會是如何操作?

這里,筆者介紹基於 WMD (Earth Mover』s Distance)的語義相似度演算法,與上面的情緒分析類似,還有用到之前訓練得到的字向量模型,藉助外部語義信息來應對同義不同字的情形。

WMD (EarthMover』s Distance)是一種能使機器以有意義的方式(結合文本的語義特徵)評估兩個文本之間的「 距離 (也就是文本間的相似度)」的方法,即使二者沒有包含共同的詞彙。它使用基於word2vec的詞向量,已被證明超越了k-近鄰分類中的許多現有技術方法。以下是基於WMD的「射覆」的機器解:

上面兩個句子沒有共同的詞彙,但通過匹配相關單字,WMD能夠准確地測量兩個句子之間的(非)相似性。該方法還使用了基於詞袋模型的文本表示方法(簡單地說,就是詞彙在文本中的頻率),如下圖所示。該方法的直覺是最小化2段文本間的「 旅行距離 (traveling distance)」,換句話說,該方法是將文檔A的分布「移動」到文檔B分布的最有效方式。

簡要的解釋了相關原理後,筆者緊接著展現最後的分析效果。由於對《 妖貓傳 》中的那首線索式的《 清平樂 》印象深刻,筆者讓機器在《 全唐詩 》+《 全宋詞 》中查找與它相關性最大的TOP9詩詞。結果如下:

查找的結果排行第一的是原句,但有一個字不同(其實古語中「花」、「華」互通,華字的繁體是會意字,本意是「花」),略微差異導致相似度不為1.0。第二相似的是一首宋詞,林正大的《 括酹江月(七) 》,其實這整首詞可以作為李白《 清平樂 》的註解,因為全篇都是對它的化用:即將《 清平樂 》中的句、段化解開來,增加了新的聯想,重新組合,靈活運用,對原詩的表達進行了情感上的升華。隨後的兩句詩詞也是類似的情況,只是相似度上略有差異罷了。

緊接著,是剛才機器生成的詩句,看看與它內涵相近的詩句有哪些:

再看看筆者較為欣賞的2句名句,機器很好的捕捉到了它們之間的相似語義關系,即使詞彙不盡相同,但仍能從語義上檢索相似詩句。

寫到這里,關於《全唐詩》單獨的文本挖掘已經完成,但筆者又想到一個有趣的分析維度---從文本挖掘的角度來比較《 全唐詩 》、《 全宋詞 》和《 全元曲 》之間用字的差異,藉助字這種基本符號來分析各自的 文學藝術特徵 。

因為分析的對象涉及3個,常規的二元對比分析方法難以得出有效的結論。因此,筆者在這里跨界採用來自符號學領域的研究成果--- Semiotic Squares 。

「 Semiotic Squares (筆者譯作『符號方塊』)」,是由知名符號學大師Greimas和Rastier發明,是一種提煉式的對比分析(Oppositional Analyses)方法,通過將給定的兩個相反的概念/事例(如 「生命(Life)」和「死亡(Death)」)的分析類型(通過『或』、『與』、『非』的邏輯)拓展到4類(如「生命(Life)」、「死亡(Death)」、「生死相間(也就是活死人,The Living Dead)」、「非生非死(天使,Angels)」,有時還可以拓展到8個或10個分析維度。以下是符號方塊的結構示意圖:

說明:「+」符號將2個詞項組合成一個「 元詞項 (Metaterm)」( 復合詞 ,Compound Term),例如,5是1和2的復合結果。

Semiotic Squares的構成要素

Semiotic Squares主要包含以下2種元素(我們正在避開方塊的組成關系:對立,矛盾、互補或包含):

(1)詞項(Terms):

Semiotic Square 由4個詞項組成::

位置1 (Term 1): 詞項A(Term A)

位置 2(Term 2): 詞項B(Term B)

位置 3 (Term Not-2): 非B 詞項(Term Not-B)

位置 4 (Term Not-1): 非A詞項(Term Not-A)

Term A和TermB是相反的兩個概念,二者是對立關系,這是「符號方塊」的基礎,另外兩項是通過對Term A和Term B取反而獲得。

(2)元詞項 (Metaterms)

Semiotic Square囊括6個元詞項。這些元詞項由上面的4個基礎詞項組合而成,其中的絕大部分元詞項已被命名。

位置5 (Term 1 + Term 2): 復合詞項(Complex Term)

位置6 (Term 3 + Term 4): 中立詞項(Neutral Term)

位置7 (Term 1 + Term 3): 正向系(Positive Deixis)

位置8 (Term 2 + Term 4): 負向系(Negative Deixis)

位置9(Term 1 + Term 4): 未命名(Unnamed)

位置10(Term 2 + Term 3): 未命名(Unnamed)

下面以「男性」和「女性」這兩個相對的概念來舉個例子,注意其中錯綜復雜的邏輯關系/類型。

說完了分析的大致原理,筆者這里就來實戰一番,與上述原始模型不同的是,筆者在這里除了基本的二元對立分析外,還新增了一個分析維度,總體是關於《 全唐詩 》、《 全宋詞 》和《 全元曲 》的三元文本對比分析。

預處理前的文本是這樣的:

預處理後是這樣的形式:

用Semiotic Squares進行分析的結果如下圖所示:

從上面呈現的TOP10高頻字和象限區塊(左上角「唐詩」、右上角「宋詞」和正下方「元曲」)來看,唐詩、宋詞、元曲中出現的 獨有高頻字 依次是:

唐詩 :唯、餘、始、鳥、含、爾、昔、茲、忽、棲、川、旌、戎、秦…

宋詞 :闌、沈、匆、簾、濃、約、淡、觴、蕊、屏、凝、笙、瑤、柔…

元曲 :哥、俺、咱、孩、姐、吃、哩、科、廝、拿、你、叫、呀、呵…

從上面的關鍵字來看,唐詩、宋詞和元曲各自的特徵很鮮明:

唐詩 :用字清澹高華、含蓄,詩味較濃,寄情山水和金戈鐵馬的特徵明顯,可以聯想到唐詩流派中典型的 山水田園派 和 盛唐邊塞詩 ,它們大都反映大唐詩人志趣高遠、投效報國的情懷。

宋詞 :所用的字體現出婉約、宛轉柔美,表現的多是兒女情長,生活點滴,這也難怪,由於長期以來詞多趨於宛轉柔美,人們便形成了以婉約為正宗的觀念。

元曲 :所用的字生活氣息濃重,通俗易懂、接地氣、詼諧、灑脫和率真,充分反映了其民間戲曲的特徵,這與蒙元治下的漢族知識分子被打壓,很多文人鬱郁不得志、轉入到民間戲曲的創作中來有關。

此外,正上方的「復合」中,表徵的是三者皆常用的字,即共性特徵,主要涉及 寫景 (如 「晴」、「幽」、「溪」、「洲」、「霜」、「浦」、「露」、 「碧」、「帆」、「峰」等)和 抒情 (等「悵」、「憶」、「寂」、「悠」等)。

下方的兩個象限,「Not 唐詩」和「Not 宋詞」分別代表的「宋詞+元曲」、「唐詩+元曲」,三者之二的共性高頻字,中的兩項也以此類推。

『柒』 常見的文件類型有哪幾種

常見的文件類型有5類,具體如下:

1、文本文件類型。

文本文件類型:包括ASCII、MIME、.txt等格式。

(1)ASCII標准使得只含有ASCII字元的文本文件可以在Unix、Macintosh、Microsoft Windows、DOS和其它操作系統之間自由交互。

(2)文本文件在MIME標准中的類型為「text/plain」,此外,它通常還附加編碼的信息。在Mac OS X出現前,當Resource fork指定某一個文件的類型為「TEXT」時,Mac OS就認為這個文件是文本文件。

(3).txt是包含極少格式信息的文字文件的擴展名。.txt格式並沒有明確的定義,它通常是指那些能夠被系統終端或者簡單的文本編輯器接受的格式。

2、視頻文件格式類型。

視頻文件格式有不同的分類,如:

(1)微軟視頻 :wmv、asf、asx。

(2)Real Player :rm、rmvb。

(3)MPEG視頻 :mp4。

(4)手機視頻 :3gp。

(5)Apple視頻 :mov、m4v。

(6)其他常見視頻:avi、dat、mkv、flv、vob等。

3、音頻文件格式類型。

音頻文件格式類型:包括Wave、AIFF、Audio、MPEG、RealAudio、MIDI等格式。

(1)Wave格式是微軟公司開發的一種聲音文件格式,它符合PIFF(Resource Interchange File Format) 文件規范,用於保存WINDOWS平台的音頻信息資源,被WINDOWS平台及其應用程序所支持。

(2)AIFF是音頻交換文件格式的英文縮寫,是蘋果計算機公司開發的一種音頻文件格式。

(3)Audio文件是Sun Microsystems公司推出的一種經過壓縮的數字音頻格式,是Internet中常用的聲音文件格式。

(4)MPEG(Moving Picture Experts Group,動態圖像專家組)代表運動圖像壓縮標准,這里的音頻文件格式指的是MPGE標准中的音頻部分。

(5)RealAudio文件是RealNetworks公司開發的一種新型流式音頻(Streaming Audio)文件格式,它包含在RealNetworks公司所制定的音頻、視頻壓縮規范RealMedia中,主要用於在低速率的廣域網上實時傳輸音頻信息。

(6)MIDI(Musical Instrument Digital Interface,樂器數字介面)是數字音樂/合成樂器的統一國際標准,它定義了計算機音樂程序、合成器以及其他電子設備交換音樂信號的方式。

4、圖片文件格式類型。

圖像格式即圖像文件存放的格式,通常有JPEG、TIFF、RAW、BMP、GIF、PNG等。由於數碼相機拍下的圖像文件很大,儲存容量卻有限,因此圖像通常都會經過壓縮再儲存。

5、可執行文件格式類型。

可執行文件 (executable file) 指的是可以由操作系統進行載入執行的文件。在不同的操作系統環境下,可執行程序的呈現方式不一樣。在windows操作系統下,可執行程序可以是 .exe文件 .sys文件 .com等類型文件。

『捌』 php解密,麻煩幫忙解下密

這段代碼估計是為了降低源代碼被抄襲的的幾率,將代碼給加密

php這玩意目前沒有什麼有效的官方代碼加密手段(例如c的.dll文件就是可以一種有效的代碼加密)

php如果將代碼過分的加密話,那麼,在伺服器運行的時候,還需要將代碼解密再進行解釋,這樣大大加大了伺服器的負擔以及反應時間,對用戶的體感也不很好。所以,只能將代碼部分加密話,關鍵字部分放著不動,

例如

$a=100;$b=1000;echo$a;echo$b;

可以加密化的寫為

$xx0000x=100;$xx000x0=100;
echo$xx0000x;echo$xx000x0;

簡單來說就是,將變數名或方法名,以某種規律改寫,但是邏輯性保證與源代碼一致,這樣機器運行起來,沒有任何障礙,但是對人為的代碼閱讀,就有了不小的難度

我上面的變數名加密方式是將變數名二進制化然後將1替換成x


說回樓主的代碼,變數的加密方式一般都是代碼作者或團隊從新定義的加密方式,想要解密,很難。幾乎不可能,如果樓主有興趣,可以試著按照我的那個加密方式去解密,但是估計9成是錯的。

這里,數值和字元串沒有被加密,那麼可以多少看一下


整理之後發現,JE9PME..........................wME8wKTs=這段(中間略掉)是可以解密的,採用的是base64加密演算法,解密後

$OO0OO0000=$OOO000000{17}.$OOO000000{12}.$OOO000000{18}.$OOO000000{5}.$OOO000000{19};if(!0)$O000O0O00=$OO0OO0000($OOO0O0O00,'rb');$OO0OO000O=$OOO000000{17}.$OOO000000{20}.$OOO000000{5}.$OOO000000{9}.$OOO000000{16};$OO0OO00O0=$OOO000000{14}.$OOO000000{0}.$OOO000000{20}.$OOO000000{0}.$OOO000000{20};$OO0OO000O($O000O0O00,1173);$OO00O00O0=($OOO0000O0($OO0OO00O0($OO0OO000O($O000O0O00,380),'+/=','+/')));eval($OO00O00O0);

這段加密代碼似乎本身就是一個加密演算法

至於演算法,樓主自己整理一下吧,應該可以整理出來的


這里附上一個js版的base64加密解密演算法。樓主自己去試試吧

熱點內容
android彈出通知 發布:2025-05-16 14:59:20 瀏覽:509
資料庫EST 發布:2025-05-16 14:59:15 瀏覽:197
android版本號修改 發布:2025-05-16 14:53:48 瀏覽:173
android相機閃光燈 發布:2025-05-16 14:35:49 瀏覽:259
伺服器無法通過ip訪問 發布:2025-05-16 14:26:13 瀏覽:540
網吧u盤拒絕訪問 發布:2025-05-16 14:13:50 瀏覽:260
無線網檢查網路配置是怎麼回事 發布:2025-05-16 14:04:03 瀏覽:220
網路爬蟲python代碼 發布:2025-05-16 14:03:26 瀏覽:516
汽車小組件怎麼弄到安卓桌面 發布:2025-05-16 13:51:12 瀏覽:220
linuxg編譯器下載 發布:2025-05-16 13:50:58 瀏覽:776