Saf kuru ürünler | Büyük kısa metin senaryolarında tekilleştirme algoritması

En basit yol

Çoğu durumda, büyük miktarda tekrarlanan metin genellikle iyi bir şey değildir, örneğin intihal edilmiş haberler, toplu spam metin mesajları, ezici reklam metni vb. Bu, ağ içeriğinin homojenliğine neden olur ve veri tabanının depolama yükünü artırır. , İşleri daha da kötüleştirmek, metin içeriğinin kalitesini düşürmektir. Bu nedenle, doğru ve verimli bir metin tekilleştirme algoritmasına ihtiyaç vardır. En basit yol, tüm metinleri çiftler halinde karşılaştırmaktır; bu, basit ve anlaşılması kolay ve çoğu insan sezgisiyle uyumludur.Küçük bir metin miktarı için, uygulanması da çok uygundur, ancak büyük miktarda metin için bu kesinlikle mümkün değildir. Zamanın karmaşıklığından dolayı, metinleri yüz milyonlar düzeyinde tekilleştirirken, zaman tüketiminin yıl birimleri cinsinden olması gerekebilir ve bu işe yaramaz.

Ek olarak, tekilleştirme hakkında konuştuğumuzda, aslında iki yönü ima ediyoruz: Birincisi, daha verimli bir şekilde nasıl karşılaştırılacağı ve ikincisi, karşılaştırırken tekilleştirme standardı. Metin alanında, tekilleştirme standardı, genellikle düzenleme mesafesi, Jaccard mesafesi, kosinüs mesafesi, Öklid mesafesi, anlamsal mesafe vb. Dahil olmak üzere iki metnin benzerliğinin nasıl ölçüleceğidir ve farklı alan ve senaryolarda farklı olanları seçmektir. Benzerlik ölçme yöntemi, burada bu makalenin odak noktası değildir, bu nedenle aşağıdaki tablo listelenmemiştir, aşağıdaki, verimli karşılaştırmaların nasıl yapılacağı sorununu çözmeye odaklanmaktadır.

ana fikir

Zaman karmaşıklığını azaltmanın anahtarı: > Potansiyel olarak benzer metinleri bir araya getirmeye çalışın, böylece karşılaştırma kapsamını büyük ölçüde azaltın

simHash algoritması

Büyük metin tekilleştirme algoritmaları arasında en iyi bilinen, Google tarafından önerilen ve gerçek web tekilleştirmeye uygulanan bir dizi algoritma olan simHash algoritmasıdır. SimHash algoritmasının en büyük özelliği, metnin bir 01 dizgisine eşlenmesi ve benzer metinler arasında elde edilen 01 dizesinin de benzer olmasıdır, birkaç konumda sadece 0 ve 1 farklıdır. Orijinal metnin benzerliğini karakterize etmek için, iki 01 dizgisi arasında kaç konumun farklı olduğunu hesaplayabilirsiniz.Bu, simHash algoritması altında iki metin arasındaki benzerliği karakterize etmek için kullanılan Hamming mesafesidir. Genel olarak konuşursak, daha fazlası Benzer metinler için, simHash eşlemesine karşılık gelen 01 dizgeleri arasındaki Hamming mesafesi o kadar küçük olur.

Bu süreci daha net hale getirmek için işte basit bir örnek.

t1 = "Annem seni yemeye çağırıyor"

t2 = "Annem seni yemeye çağırdı"

Yukarıdaki iki dizgenin sadece bir kelimede farklı olmasına rağmen, basit bir Hash algoritması ile elde edilen karma değerin tamamen farklı olabileceği, dolayısıyla elde edilen karma değerin orijinal metnin benzerliğini karakterize etmek için kullanılamayacağı görülebilir. Ancak simHash algoritması ile haritalandıktan sonra elde edilen simHash değeri aşağıdaki gibidir:

SH1 = "1000010010101101111111000001010110100000111110000100101001011"

SH2 = "1000010010101101111111000001010110100000111110000100101001011"

Dikkatlice gözlemleyin, yukarıdaki iki simHash değeri yalnızca üç yerde farklıdır (farklı yerler "" ile işaretlenmiştir), bu nedenle orijinal metin arasındaki Hamming mesafesi 3'tür. Genel olarak konuşursak, benzer metin algılamada kullanılan Hamming mesafe kriteri 3'tür, yani iki metne karşılık gelen simHash arasındaki Hamming mesafesi 3'ten küçük veya eşit olduğunda, iki metin benzer kabul edilir. Çoğaltmayı kaldırmaksa, sadece birini bırakabilirsiniz.

SimHash algoritmasının tekilleştirme süreci fikri çok basittir. Her şeyden önce bir anahtar nokta var: > Benzer metnin kriteri Hamming mesafesi 3 ise, bir külliyatta tekilleştirilecek iki benzer metin vardır, yani iki benzer metin arasındaki Hamming mesafesinin maksimum değeri 3'tür (karşılık gelen hash değeri en fazla 3'tür) Farklı yerler), simHash 64 bit ise, 64 bitlik hash değeri yüksekten düşüğe dört ardışık 16 bit'e bölünebilir, bu durumda bu 3 farklı konum en fazla 4'ün birini doldurabilir. 3 aralık (tersine, bu 4 aralık doldurulursa, 4 Hamming mesafesi olur). Başka bir deyişle, birbirini izleyen 16 bitten birinde iki benzer metin tam olarak aynı olmalıdır.

Bu önemli noktayı anladıktan sonra, tekilleştirilecek metnin tamamı için bir simHash eşlemesi gerçekleştirebilir (bu makalede 64-bit örnekler kullanılmıştır) ve ardından bu 01 dizgilerini yüksekten alta doğru dört bölüme ayırabilirsiniz.Yukarıdaki tartışmaya göre, iki Benzer bir metin, aynı paragraflardan birine sahip olmalı, yine yukarıdaki örneği kullanmalı ve aşağıdaki gibi dört paragrafa bölünmelidir:

t1 = "Annem seni yemeye çağırıyor"

SH1 = "1000010010101101111111000001010110100000111110000100101001011"

SH1_1 = "1000010010101101" # Birinci paragraf

SH1_2 = "111111000001010" # İkinci paragraf

SH1_3 = "110100000111110" # üçüncü paragraf

SH1_4 = "000100101001011" # Dördüncü paragraf

t2 = "Annem seni yemeye çağırdı"

SH2 = "1000010010101101111111000001010110100000111110000100101001011"

SH2_1 = "1000010010101101" # Birinci paragraf

SH2_2 = "111111000001010" # İkinci paragraf

SH2_3 = "110100000111110" # üçüncü paragraf

SH2_4 = "000100101001011" # Dördüncü paragraf

Bu adım tamamlandıktan sonra, bir sonraki adım dizini oluşturmaktır. Yukarıdaki tartışmaya göre, her simHash yüksekten düşüğe 4 bölüme ayrılmıştır ve her bölüm 16 bittir. Tersine çevrilmiş indeksin oluşturulması sürecinde, bu kesilmiş 16 bitlik 01 string fragmanları, indeksin anahtar değeri olarak kullanılır ve ilgili pozisyonda bu fragmana sahip tüm metin, bu indeksin değer alanına eklenir. Sezgisel olarak, 1, 2, 3 ve 4 (64 bitlik karma değerinin birinci, ikinci, üçüncü ve dördüncü bölümlerine karşılık gelen) olmak üzere dört büyük kova vardır. Her bir büyük kova vardır. Küçük kovalar, bu küçük bölümler 0000000000000000 ile 1111111111111111 arasında numaralandırılır. Dizine eklerken, her metin karşılık gelen simHash değerini aldıktan sonra, her paragrafı ayrı ayrı inceleyin (hangi bölümün 1, 2, 3 ve 4 olduğunu belirleyin), Daha sonra paragraftaki 16 bitlik karma değerine göre metin, karşılık gelen büyük bölümdeki karşılık gelen numaralandırılmış küçük bölüme yerleştirilir. İndeks oluşturulduktan sonra, benzer metinler kesinlikle 16 bitlik hash değerine sahip bir kovada bulunacağından, bu segmentlerin tüm paketleri tekilleştirilir (paralel olarak yapılabilir) ve metin koleksiyonundaki tüm benzer metinler kaldırılabilir. .

Tekilleştirme için simHash kullanma sürecinin tamamı aşağıdaki şekilde gösterilmektedir:

Özetlemek gerekirse, simHash tekilleştirme adımlarının tamamı temel olarak üçtür: 1. Tekilleştirilecek her metin için simHash eşlemesi gerçekleştirin; 2. simHash değerini segmentlere ayırarak tersine çevrilmiş bir dizin oluşturun; 3. Her segmentin hash değerinde Veri tekilleştirme işlemlerini paralelleştirin.

SimHash'ı çoğaltmak için kullanmanın iki önemli noktası vardır: -Orijinal metnin benzerliği simHash eşlemesinden sonra da korunur; -Bölme ve yönetme fikri, gereksiz karşılaştırmaların sayısını büyük ölçüde azaltır.

Bu nedenle, garanti olarak bu iki nokta ile uzun metinler altındaki simHash algoritması ve metinler arasındaki benzerliği ölçmek için Hamming mesafesinin kullanılması için algoritmanın zaman karmaşıklığı büyük ölçüde azaltılabilir ve iyi bir tekilleştirme de sağlanabilir. etki. Ancak kısa metin senaryolarında, bu ölçüm yönteminin etkisi çok zayıf olacaktır.Normalde uzun metinlerin benzerliğini ölçmek için kullanılan Hamming mesafe eşiği 3'tür, ancak kısa metinlerde benzer metinler arasındaki Hamming mesafesi Mesafe genellikle 3'ten büyüktür ve bu algoritmada, Hamming mesafesine dayalı benzerlik eşiği ne kadar yüksek seçilirse, algoritmanın zaman karmaşıklığı o kadar yüksek olacaktır.Bu zamanda, Hamming mesafesi, kısa metinlerin benzerliğinin bir ölçüsü olarak kullanılmaya devam edemez. Standart, kısa metin tekilleştirmeye uygulanır.

Metin yerel bilgilerine dayalı tekilleştirme algoritması

Metnin kısmi bilgisine dayanan tekilleştirme işleminin temel fikri simHash'a benzer, tek fark, karma değeri kullanmak yerine metnin bir alt dizesinin doğrudan anahtar olarak kullanılması ve ardından bu alt dizeye sahip herhangi bir metin bu alt dizeye yerleştirilecektir. Namluya karşılık gelen dize. Burada bir öncül örtüktür: > Karar verilebilir herhangi iki benzer metin, bir veya daha fazla alt dizede aynı olmalıdır.

Ek olarak, alt dizelerin oluşturulması, n-gram'a benzer bir yöntemle orijinal metindeki kayan pencereden doğrudan kesilebilir (eğer kelime ve karakter seviyesindeyse, zona karşılık gelirse) veya geri kalan durdurma kelimelerini kaldırabilirsiniz. Yüklem kombinasyonunda, bir özet oluşturduktan sonra orijinal metni de çıkarabilirsiniz.Kısacası, orijinal metne veya kabul edilebilir aralıktaki kayıplı metne dayandığı sürece, bu alt dizeleri dizinler olarak oluşturmak için benzer fikirler kullanılabilir.

Tüm tekilleştirme algoritması beş ana çerçeveye bölünmüştür: metin ön işleme, tersine çevrilmiş dizin oluşturma, paralel bölme ve yönetme, veri tekilleştirme algoritmasının uygulanması, metin birleştirme vb.

Metin ön işleme

Metin ön işleme, seçilen belirli alt dize yakalama yöntemine göre farklıdır. Alt dize, bir sözcük kombinasyonundan oluşuyorsa, metni bölümlere ayırmanız gerekir.Eğer durdurma sözcüklerini kaldırmanız gerekiyorsa, bu aynı zamanda metin ön işlemenin işidir. Sürecin analizini basitleştirmek için, burada esas olarak doğrudan alt dizeleri yakalayan orijinal metni bir örnek olarak alıyoruz, bu nedenle ön işleme işi nispeten daha azdır.

Ters endeksin oluşturulması

Olası olarak benzer iki metnin (biri tekilleştirmenin gerekli olmasından sonra kaldırılır) sırasıyla t1 ve t2 olduğunu varsayalım. İkisi arasında tamamen tutarlı olan en büyük sürekli alt metin dizgisi vardır ve bunlar S = olarak tanımlanan bir küme oluştururlar. {s1, s2, ..., sk}, bu alt metin dizelerinin uzunluğu da bir L = {l1, l2, ..., lk} kümesine karşılık gelir, belirli iki metin için tekilleştirme yapıldığında, seçilen Yakalanan alt metin dizesinin uzunluğu belirli bir eşiği aşamaz, çünkü yakalanan uzunluk eşiği aşarsa, iki metin artık aynı alt metin dizisine sahip olmayacaktır, bu nedenle algoritma iki metni baştan sona karşılaştırmayacaktır. Veri tekilleştirme amacına ulaşılamıyor. Bu eşik, iki metnin maksimum tekilleştirme uzunluğu olarak tanımlanır, bunlar:

Tüm genel metinleri tekilleştirmek istiyorsanız, aynı zamanda genel bir tekilleştirme uzunluğu m vardır; bu, genel metnin bu bölümünde benzer metinleri çoğaltmak istiyorsanız, her metin için uygun bir kesme uzunluğu seçmeniz gerektiğini belirtir. Genel olarak konuşursak, küresel tekilleştirme uzunluğunun seçimi, tekilleştirme oranı ve algoritmanın zaman karmaşıklığı ile ilgilidir.Gerçek seçimde, tekilleştirme oranı ile zaman karmaşıklığı arasında bir uzlaşmadır. Genel tekilleştirme uzunluğu ne kadar küçük seçilirse metin tekilleştirme etkisi o kadar iyi olur (tekilleştirme oranı artar), ancak karşılık gelen zaman karmaşıklığı da daha yüksektir. Genel tekilleştirme uzunluğunun seçimi ne kadar büyükse, benzer metinlerin tekilleştirilmesinin etkisi o kadar kötü olur (bazı benzer metinler karşılaştırılmaz), ancak zaman karmaşıklığı azalır. Buradaki sebep şudur: global tekilleştirme uzunluğu çok yüksek seçilirse, birçok benzer metnin maksimum tekilleştirme uzunluğundan daha büyük olacaktır, bu nedenle bu benzer metinler artık benzer metinler olarak değerlendirilmeyecek ve tekilleştirme oranı azalacaktır, ancak aynı zamanda pozitiftir. Karşılaştırma sayısı azaldığından, zaman karmaşıklığı azalır. Aksine, global tekilleştirme uzunluğu azaldıkça, daha fazla benzer metinler aynı dizine bölünecek, benzerlik hesaplamasından sonra, karşılık gelen benzer metinler de kaldırılacak, böylece küresel tekilleştirme oranı artacaktır. Bununla birlikte, karşılaştırma sayısı arttıkça, zaman karmaşıklığı da artacaktır.

Gerçek metinden örneklenen benzer bir metin kümesi C olduğu varsayılırsa, genel tekilleştirme uzunluğu m bu örnek kümesine göre belirlenebilir. Asıl durum, genellikle m > = 4 (genellikle iki Çince kelimenin uzunluğuna karşılık gelir), algoritma paralel olarak hesaplandığında, zaman karmaşıklığı kabul edilebilir bir aralığa indirildi, böylece şunları elde edebilirsiniz:

Tekilleştirilecek bir t metninin n uzunluğunda olduğunu varsayalım. S'yi, yakalanan m-gram alt dizeleri kümesi olarak tanımlayın. M ve n arasındaki ilişkiye göre, aşağıdaki iki durum vardır: (1) Ne zaman n > = m, bazı m-gram alt dizeleri kümeleri m'nin boyutuna göre kesilebilir. Kümenin boyutu n-m + 1'dir ve S = {s1, s2, ..., sn-m + simgesiyle temsil edilir 1}; (2) n < M olduğunda, m uzunluğundaki alt dize kesilemez, bu nedenle metnin tamamı alt dizeye bir bütün olarak eklenir, yani S = {t}. Tekilleştirilecek metnin her m-gram alt dize kümesi üretildikten sonra, Her metin t için, karşılık gelen kümedeki öğeleri çaprazlayın, kümedeki her bir alt dizeyi anahtar olarak kullanın ve orijinal metni t'yi karşılık gelen değer olarak birleştirerek bir anahtar / değer çifti oluşturun. Tüm metinlerin m-gram alt dizeleri kümesini geçtikten sonra, her metnin ters çevrilmiş dizini ve onun n-m + 1 m-gram alt dizeleri elde edilebilir. Daha sonra, dizin anahtarı değerinin farkına göre, aynı dizin anahtarı değeri altındaki tüm metinler, tekilleştirme mantığını uygulamak için toplanabilir.

Algoritmik paralel çerçeve

Buradaki paralel çerçeve esas olarak Spark'a dayanarak uygulanır. Orijinal metin koleksiyonu, HDFS biçiminde kümenin her bir düğümünde saklanır. Bu metinler, yukarıda belirtilen yönteme göre karşılık gelen dizinlere bölündükten sonra, her biri Hashing için bir anahtar olarak bir indeks kullanılır ve tekilleştirilecek tüm metinler, hash değerine göre karşılık gelen makine düğümüne (aşağıdaki şekilde Sunucu) atanır Dağıtılmış kümedeki her bir çalışan düğüm, yalnızca makine altındaki tekilleştirme çalışmasından sorumludur. . Spark'a dayalı dağıtılmış çerçeve şu şekildedir: Her Sunucu çalışan bir düğümdür ve sürücü dağıtım ve dağıtımdan sorumludur. HDFS depolama biçimindeki metin koleksiyonu bu düğümlere dağıtılır, bu da potansiyel olarak tekrarlanan metnin kaba taneli bir işlemine eşdeğerdir. Tek tek toplanmış, çoğaltılmamış metin tamamen ayrılmıştır, bu nedenle her sunucunun yalnızca düğümdeki tekilleştirme çalışmasından sorumlu olması gerekir ve son olarak her sunucu, ilk tekilleştirme işleminden sonra metinle kalır.

Tekilleştirmenin uygulanması

Paralelleştirme çerçevesi oluşturulduktan sonra, her bir dizine bölünen metin çiftler halinde karşılaştırılabilir (önceki şekilde gösterildiği gibi, her sunucu birden fazla dizine karşılık gelen metni işleyebilir) metin tekilleştirmeyi başarabilir. 1'deki analize göre, karar verilebilir herhangi iki benzer metin t1 ve t2, bir veya daha fazla alt metin dizisinde aynı olmalıdır. 3.1.1'deki ayara göre, bu tamamen tutarlı maksimum sürekli alt dizeler bir S = {s1, s2, ..., sk} kümesi oluşturur. T1 ve t2 için m-gram alt dizelerini bölme sürecinde, varsayalım M-gram alt dizeleri kümesi sırasıyla S1 ve S2 olarak elde edilebilir S'de si olarak bir alt dize olduğunu ve uzunluğunun | si | genel tekilleştirme uzunluğu m'den daha büyük olduğunu varsayalım, bu durumda si alt dizesi | si | -m + 1 m-gram alt dizeler ve bu alt dizeler hem S1 hem de S2'de bulunmalıdır. Dahası, hem t1 hem de t2, | si | -m + 1 m-gram alt dizesi tarafından anahtarlanan ters çevrilmiş dizinde görünecektir.

Yinelenenleri kaldırırken, her dizinin altındaki tüm metinler için ikisi arasındaki benzerlik hesaplanabilir. Spesifik yöntem, bir sonuç kümesini dinamik olarak korumaktır, başlangıç durumunda, çekirdek metin olarak indeksin altındaki metinlerden birini rastgele seçip, indeks altında tekilleştirilecek metni gezdirmek ve her geçen metni sonuç kümesine eklemeye çalışmaktır. , Ekleme sürecinde, geçiş yapılan metnin ve sonuç kümesindeki her metnin benzer olarak değerlendirilip değerlendirilemeyeceğini hesaplayın (benzerlik ölçüm eşiğini kullanarak), eğer sonuç kümesindeki bir metinle benzer bir koşulu karşılıyorsa, sonuçtan çıkın Set geçişi.Sonuç kümesi tamamen dolaşırsa ve benzer koşullar tetiklenmezse, tekilleştirilecek metin ile bilinen sonuç kümesi arasında bir yineleme olmadığı anlamına gelir, bu nedenle metin sonuç kümesine eklenir ve sonraki metin tekilleştirilir. Bir geçiş. Tekilleştirmede, iki metin arasındaki benzerlik ölçümü çok kritiktir ve bu da tekilleştirmenin etkisini doğrudan etkiler. Kullanılabilen yöntemler arasında düzenleme mesafesi, Jaccard benzerliği ve benzeri yer alır. Gerçek kullanımda, Jaccard benzerliğinin hesaplanması genellikle karşılaştırılacak metnin bölümlendirilmesini gerektirir.Karşılaştırılacak iki metnin bölümlenmiş kümelerinin sırasıyla A ve B olduğu varsayıldığında, Jaccard benzerlik tanımına göre iki metin elde edilebilir. Açıktır ki, tamamen tutarsız iki metnin Jaccard benzerliği 0'dır. Aksine, iki özdeş metnin Jaccard benzerliği 1'dir. Bu nedenle, Jaccard benzerliği 0 ile 1 arasında bir sayıdır. O zaman, gerçek ihtiyaçlara göre uygun bir eşik belirlenebilir ve bu eşikten daha büyük olan herhangi bir metin, benzer metinler olarak değerlendirilip kaldırılacaktır.

Tekilleştirme uygulamasının sözde kodunun tamamı aşağıdaki gibidir:

Başlangıç hali:

Metin koleksiyonu T = {t_1, t_2, ..., t_n}

Tekilleştirme sonucu R = {}

Benzerlik eşiği sim_th

Çıktı sonucu:

Tekilleştirme sonucu R

Algoritma süreci:

T'de i için:

bayrak = true

R'deki j için:

eğer (benzerlik (i, j) < sim_th)

bayrak = yanlış

kırmak > sonraki ben

Başka

devam et- > sonraki j

eğer (bayrak)

R.append (i) # Geçerli sonuç kümesindeki i metninin ve herhangi bir metnin tekrarlanmadığını gösterir, ardından sonuç kümesine i eklenecektir

Metin birleştirme

Bu adımın ana amacı, farklı makine düğümlerinde metnin önceden düzenlenmiş kimliklerine göre ortak karma tekilleştirmeyi yeniden yürütmektir, çünkü önceki adımın işlemine göre, farklı alt dizelere karşılık gelen kovalar olabilir. Aynı metin ortada bırakılacak ve bu adım yinelenenleri kaldırmak için hashing uygulandıktan sonra, bu yinelenen kimlikler kaldırılacaktır. Nihai sonuç, tüm metin koleksiyonunda, tekilleştirme amacını gerçekleştirecek şekilde yalnızca bir parça tekrarlanan metnin tutulmasıdır. Tekilleştirme sürecinin tamamı aşağıdaki şekilde gösterilmektedir:

SimHash ile karşılaştır

Burada önerilen tekilleştirme algoritması, zaman karmaşıklığı ve tekilleştirme doğruluğu açısından simHash ile karşılaştırılır.

Her şeyden önce, zaman karmaşıklığı büyük ölçüde azaltılır - bölüm sayısı, metin sayısının yaklaşık iki katı olan metin hacminin boyutuna göre dinamik olarak değişir. Ortalama olarak, tek bir kova içinde birden az metin vardır ve bölümdeki hesaplama karmaşıklığı büyük ölçüde azalır; simHash algoritması ise , Bölüm sayısı sabittir 4 * 216 = 260,000-Genel olarak, sadece benzer metinler benzer kelime kombinasyonlarına sahiptir, bu nedenle belirli bir kelime kombinasyonu altındaki benzer metinler çoğunluğu oluşturur. Ağır zaman karmaşıklığı O (N) eğilimindedir; buna uygun olarak, tek bir simHash kovasında hala birçok farklı metin vardır ve tekilleştirmenin zaman karmaşıklığı O (N ^ 2)

İkinci olarak, benzerlik ölçümü daha doğrudur: -Daha doğru benzerlik ölçüm araçları kullanılabilir, ancak simHash'ın Hamming mesafesi kısa metinlerde çalışmaz, geri çağırma çok düşüktür ve birçok benzer metin Hamming mesafesini 3'ten daha az karşılamaz. Koşulları

sonuç olarak

SimHash gibi tekilleştirme algoritması kısa metin sahnesinde veri tekilleştirme amacını karşılayamadığında burada önerilen metnin yerel bilgisine dayalı tekilleştirme algoritması önerilmektedir.Aslında uzun metin altındaki tekilleştirme gereksinimlerine de uygulanabilmektedir. , Zaman karmaşıklığı simHash'tan çok daha düşük olabilir, etki simHash'a benzer olabilir, tek dezavantajı depolama alanının daha büyük olmasıdır, çünkü algoritma metnin birçok kopyasının depolanmasını gerektirir, ancak metnin bu kopyalarını saklarken, küresel olarak benzersiz olanı kullanabilirsiniz. Bunun yerine ID, yani depolama basıncı, büyük ölçüde azaltılmış zaman karmaşıklığına kıyasla fazla artmaz, bu alan depolama basıncı tamamen ekonomiktir.

Orijinal metin WeChat Resmi Hesabı-Tencent QQ Büyük Veri (qq_bigdata) üzerinde yayınlandı

Bir Lenovo F41A dizüstü bilgisayar veya Snow Mountain Memorial Edition almak için 160 yuan harcadı
önceki
Hala Renkli'ye mi bakıyorsun? Renjia, dünyanın en büyük üçüncü grafik kartı markası haline geldi
Sonraki
QQ Aegis öneri sistemi ısı iletim modeli ile ilgili öneri gerçek savaşa dayalı
Da Diao donanımı tamamen kaplıdır! GIGABYTE, Aorus oyun monitörünü ısıtıyor
Saf Kuru Ürünler | Dağıtık İfade ve Bilgi Grafiğinin Uygulanması
Tongde'nin beş kaplanından biri olan YESTON 9800GTX + grafik kartını çıkarın ve bilgisayardaki performansı deneyin
Mobil tarayıcı da şu şekilde oynayabilir: yalnızca kendi reklamlarına sahip olmakla kalmaz, aynı zamanda reklam vermenize de yardımcı olur
İPhone 8'in A11 çipi ne kadar güçlü? Sadece Snapdragon 835'i asmakla kalmadı, aynı zamanda kendi MBP'sini de öldürdü
Üç katlı villanın ağ gereksinimlerini karşılayın
Eskiden oyun oynamak için bir zorunluluktu ve fiyatı en az on yuan idi, ama şimdi değersiz
Pek çok üreticinin JD.com'daki yeni ürünleri özel olarak piyasaya sürüldü ve JD.comun 3C'si bu okul sezonunu kazandı
Gereksiz bir grafik kartı haline geldi, ancak ana kara pazarına döndüğünde Gigabyteın amiral gemisi ürünüydü.
AI Challenger 2018: Ayrıntılı kullanıcı incelemesi duyarlılığı sınıflandırma şampiyonu için fikirlerin özeti
DIY dünyasında, iyi bir figürünüz olduğu sürece, herkesle oynayabilirsiniz.
To Top