偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

指南 | 手把手教你解決90%的NLP問(wèn)題

新聞 機(jī)器學(xué)習(xí)
利用機(jī)器學(xué)習(xí)方法來(lái)理解和利用文本,從最簡(jiǎn)單的到state-of-the-art,由淺入深,循序漸進(jìn)。

[[279869]]

文本數(shù)據(jù)到處都是

無(wú)論是一家已成立的公司,還是正在開(kāi)發(fā)一項(xiàng)新服務(wù),都可以利用文本數(shù)據(jù)來(lái)驗(yàn)證、改進(jìn)和擴(kuò)展產(chǎn)品的功能。從文本數(shù)據(jù)中提取語(yǔ)義和學(xué)習(xí)的科學(xué)是一個(gè)被稱為自然語(yǔ)言處理(NLP)的活躍研究課題。

NLP每天都有新的重要的進(jìn)展,這是一個(gè)非常大的領(lǐng)域。然而,在與數(shù)百家公司合作之后,Insight團(tuán)隊(duì)發(fā)現(xiàn)一些關(guān)鍵的實(shí)際應(yīng)用比其他應(yīng)用出現(xiàn)得更頻繁:

  • 確定不同的用戶/客戶群體(例如預(yù)測(cè)客戶流失、終身價(jià)值、產(chǎn)品偏好)
  • 準(zhǔn)確檢測(cè)和提取不同類別的反饋(正面和負(fù)面的評(píng)論/意見(jiàn),屬性,如衣服尺寸/合身度…)
  • 按意圖將文本分類(例如:請(qǐng)求基本幫助、緊急問(wèn)題)

雖然在網(wǎng)上有許多NLP的論文和教程,但我們發(fā)現(xiàn)很難找到指導(dǎo)方針和技巧來(lái)從根本上有效地解決這些問(wèn)題。

這篇文章有什么用?

在一年領(lǐng)導(dǎo)了數(shù)百個(gè)項(xiàng)目,并從美國(guó)各地的頂級(jí)團(tuán)隊(duì)獲得建議之后,我們寫(xiě)了這篇文章來(lái)解釋如何構(gòu)建機(jī)器學(xué)習(xí)解決方案來(lái)解決上述問(wèn)題。我們將從最簡(jiǎn)單可行的方法開(kāi)始,然后轉(zhuǎn)向更細(xì)微的解決方案,如特征工程、詞向量和深度學(xué)習(xí)。

讀完這篇文章,你會(huì)知道:

  • 收集、準(zhǔn)備和檢查數(shù)據(jù)
  • 建立簡(jiǎn)單的模型開(kāi)始,并過(guò)渡到深入學(xué)習(xí),如果必要的話
  • 解釋和理解你的模型,以確保你實(shí)際捕獲的是信息而不是噪音

我們寫(xiě)這篇文章是作為一個(gè)循序漸進(jìn)的指南,它還可以作為高效標(biāo)準(zhǔn)方法的高層次概述。

第一步: 收集數(shù)據(jù)

數(shù)據(jù)源的樣例

每一個(gè)機(jī)器學(xué)習(xí)問(wèn)題都是從數(shù)據(jù)開(kāi)始的,比如電子郵件、帖子或tweet列表。常見(jiàn)的文本信息來(lái)源包括:

  • 產(chǎn)品評(píng)論(亞馬遜,Yelp,各種應(yīng)用商店)
  • 用戶生成內(nèi)容(tweet、Facebook帖子、StackOverflow問(wèn)題)
  • 故障排除(客戶請(qǐng)求、支持票、聊天日志)

“Disasters on Social Media” dataset

“社交媒體災(zāi)難”數(shù)據(jù)集

對(duì)于本文,我們將使用圖8提供的數(shù)據(jù)集,名為“社交媒體上的災(zāi)難”,其中:

貢獻(xiàn)者們查看了1萬(wàn)多條推文,這些推文都經(jīng)過(guò)了各種各樣的搜索,比如“著火”、“隔離”和“混亂”,然后指出這條推文是否指的是災(zāi)難事件(而不是帶有這個(gè)詞的笑話、電影評(píng)論或其他非災(zāi)難性的東西)。

我們的任務(wù)是檢測(cè)哪些tweet是關(guān)于災(zāi)難性事件的,而不是與之相關(guān)的主題,比如電影。為什么?一種潛在的應(yīng)用可能是,在不理會(huì)對(duì)Adam Sandler最新電影的評(píng)論的情況下,只向執(zhí)法官員通報(bào)緊急情況。這項(xiàng)任務(wù)的一個(gè)特殊挑戰(zhàn)是,這兩個(gè)類都包含用于查找tweet的相同搜索詞,因此我們將不得不使用更細(xì)微的差異來(lái)區(qū)分它們。

在本文的其余部分,我們將把關(guān)于災(zāi)難的tweet稱為“災(zāi)難”,而關(guān)于其他任何事情的tweet稱為“無(wú)關(guān)”。

標(biāo)簽

我們已經(jīng)標(biāo)記了數(shù)據(jù),所以我們知道哪些tweet屬于哪些類別。正如Richard Socher在下面所概述的,找到和標(biāo)記足夠的數(shù)據(jù)來(lái)訓(xùn)練模型通常更快、更簡(jiǎn)單、更便宜,而不是試圖優(yōu)化一個(gè)復(fù)雜的無(wú)監(jiān)督方法。

手把手教你解決90%的NLP問(wèn)題

第二步: 數(shù)據(jù)清洗

我們遵循的第一條規(guī)則是:“你的模型永遠(yuǎn)只會(huì)和你的數(shù)據(jù)一樣好。”

數(shù)據(jù)科學(xué)家的關(guān)鍵技能之一是知道下一步應(yīng)該是處理模型還是數(shù)據(jù)。一個(gè)好的經(jīng)驗(yàn)法則是先查看數(shù)據(jù),然后整理它。一個(gè)干凈的數(shù)據(jù)集將允許模型學(xué)習(xí)有意義的特征,而不會(huì)在不相關(guān)的噪聲上過(guò)擬合。

這里有一個(gè)清單,可以用來(lái)清理你的數(shù)據(jù):

  1. 刪除所有不相關(guān)的字符,例如任何非字母數(shù)字字符
  2. Tokenize通過(guò)將文本分隔成單個(gè)單詞來(lái)實(shí)現(xiàn)文本的標(biāo)記
  3. 刪除不相關(guān)的單詞,比如twitter上提到的“@”或url
  4. 將所有字符轉(zhuǎn)換為小寫(xiě),以便對(duì)“hello”、“hello”和“hello”等單詞一視同仁
  5. 考慮將拼寫(xiě)錯(cuò)誤或交替拼寫(xiě)的單詞組合成一個(gè)表示(例如“cool”/“kewl”/“cooool”)
  6. 考慮詞型還原(將“am”、“are”和“is”等單詞簡(jiǎn)化為“be”等常見(jiàn)形式)

在遵循這些步驟并檢查其他錯(cuò)誤之后,我們可以開(kāi)始使用干凈的、有標(biāo)記的數(shù)據(jù)來(lái)訓(xùn)練模型!

第三步:找一個(gè)好的數(shù)據(jù)表示

機(jī)器學(xué)習(xí)模型以數(shù)值作為輸入。例如,處理圖像的模型采用矩陣表示每個(gè)顏色通道中的每個(gè)像素的強(qiáng)度。

手把手教你解決90%的NLP問(wèn)題

用數(shù)字矩陣表示的笑臉

我們的數(shù)據(jù)集是一個(gè)句子列表,所以為了讓我們的算法從數(shù)據(jù)中提取模式,我們首先需要找到一種方法,以我們的算法能夠理解的方式來(lái)表示它,即作為一個(gè)數(shù)字列表。

One-hot編碼(詞袋)

表示計(jì)算機(jī)文本的一種自然方法是將每個(gè)字符單獨(dú)編碼為一個(gè)數(shù)字。如果我們要將這個(gè)簡(jiǎn)單的表示形式提供給分類器,那么它就必須僅基于我們的數(shù)據(jù)從零開(kāi)始學(xué)習(xí)單詞的結(jié)構(gòu),這對(duì)于大多數(shù)數(shù)據(jù)集來(lái)說(shuō)是不可能的。我們需要使用更高層次的方法。

例如,我們可以為數(shù)據(jù)集中所有惟一的單詞構(gòu)建一個(gè)詞匯表,并為詞匯表中的每個(gè)單詞關(guān)聯(lián)一個(gè)惟一索引。然后,每個(gè)句子都被表示為一個(gè)列表,這個(gè)列表與我們?cè)~匯表中不同單詞的數(shù)量一樣長(zhǎng)。在這個(gè)列表的每個(gè)索引處,我們標(biāo)記給定單詞在我們的句子中出現(xiàn)的次數(shù)。這稱為詞袋模型,因?yàn)樗且粋€(gè)完全忽略句子中單詞順序的表示。如下圖所示。

手把手教你解決90%的NLP問(wèn)題

把句子表示成詞袋。左邊是句子,右邊是描述。向量中的每個(gè)索引表示一個(gè)特定的單詞。

嵌入的可視化

在“社交媒體災(zāi)難”的例子中,我們的詞匯量大約有20000個(gè)單詞,這意味著每個(gè)句子都將被表示為一個(gè)長(zhǎng)度為20000的向量。向量中大部分都是0,因?yàn)槊總€(gè)句子只包含詞匯表的一個(gè)非常小的子集。

為了查看我們的嵌入是否捕獲了與我們的問(wèn)題關(guān)的信息(即tweet是否與災(zāi)難有關(guān)),將它們可視化并查看類之間是否有很好的分隔是一個(gè)好主意。由于詞匯表通常非常大,并且不可能在20,000個(gè)維度中可視化數(shù)據(jù),因此PCA等技術(shù)將幫助將數(shù)據(jù)投射到兩個(gè)維度。下圖所示。

手把手教你解決90%的NLP問(wèn)題

詞袋嵌入的可視化

這兩個(gè)類看起來(lái)沒(méi)有很好地分離,這可能是我們的嵌入的一個(gè)特性,或者僅僅是維數(shù)減少的一個(gè)特性。為了了解詞袋特征是否有用,我們可以訓(xùn)練一個(gè)基于詞袋特征的分類器。

第四步: 分類

當(dāng)?shù)谝淮翁幚硪粋€(gè)問(wèn)題時(shí),一般的最佳實(shí)踐是從能夠解決該工作的最簡(jiǎn)單的工具開(kāi)始。每當(dāng)涉及到對(duì)數(shù)據(jù)進(jìn)行分類時(shí),由于其通用性和可解釋性,最受歡迎的是Logistic Regression。它的訓(xùn)練非常簡(jiǎn)單,結(jié)果是可解釋的,因?yàn)槟憧梢院苋菀椎貜哪P椭刑崛∽钪匾南禂?shù)。

我們將數(shù)據(jù)分成兩個(gè)部分,一個(gè)是用于擬合模型的訓(xùn)練集,另一個(gè)是測(cè)試集,以查看它對(duì)不可見(jiàn)數(shù)據(jù)的泛化程度。經(jīng)過(guò)訓(xùn)練,我們得到了75.4%的準(zhǔn)確率。還可以!猜測(cè)出現(xiàn)最多的類別(“無(wú)關(guān)緊要”)只會(huì)給我們57%的答案。然而,即使75%的精度已經(jīng)足夠滿足我們的需求,我們不能在不理解模型的情況下就發(fā)布模型。

第五步:檢查

混淆矩陣

第一步是了解我們的模型所犯錯(cuò)誤的類型,以及哪些錯(cuò)誤是最不可取的。在我們的示例中,false positive 將不相關(guān)的tweet分類為災(zāi)難,false negative 將災(zāi)難分類為不相關(guān)的tweet。如果我們的首要任務(wù)是對(duì)每一個(gè)潛在的事件做出反應(yīng),我們就會(huì)想要降低我們的false negative 。然而,如果我們?cè)谫Y源上受到限制,我們可能會(huì)優(yōu)先考慮較低的假陽(yáng)性率,以減少虛警。將這些信息可視化的一個(gè)好方法是使用混淆矩陣,它將我們的模型做出的預(yù)測(cè)與真實(shí)的標(biāo)簽進(jìn)行比較。理想情況下,矩陣應(yīng)該是一條從左上角到右下角的對(duì)角線(我們的預(yù)測(cè)與事實(shí)完全吻合)。

手把手教你解決90%的NLP問(wèn)題

混淆矩陣(綠色表示比例高,藍(lán)色表示比例低)

我們的分類器創(chuàng)建的假陰性比假陽(yáng)性多(按比例)。換句話說(shuō),我們的模型最常見(jiàn)的錯(cuò)誤是不準(zhǔn)確地將災(zāi)難分類為無(wú)關(guān)緊要的。如果假陽(yáng)性代表執(zhí)法的高成本,對(duì)我們的分類器,這可能是一個(gè)很好的偏見(jiàn)。

解釋我們的模型

為了驗(yàn)證我們的模型并解釋它的預(yù)測(cè),很重要的是看看它使用哪些詞匯來(lái)做決策。如果我們的數(shù)據(jù)是有偏差的,我們的分類器會(huì)在樣本數(shù)據(jù)中做出準(zhǔn)確的預(yù)測(cè),但是模型在現(xiàn)實(shí)世界中不能很好地推廣。在這里,我們?yōu)闉?zāi)難類和無(wú)關(guān)類繪制最重要的單詞。由于我們只需要提取模型用于預(yù)測(cè)的系數(shù)并對(duì)其進(jìn)行排序,因此用詞袋模型和邏輯回歸來(lái)繪制單詞重要性圖非常簡(jiǎn)單。

手把手教你解決90%的NLP問(wèn)題

詞袋:?jiǎn)卧~重要性

我們的分類器正確地選擇了一些模式(廣島,大屠殺),但顯然似乎在一些無(wú)意義的術(shù)語(yǔ)上過(guò)擬合(heyoo, x1392)?,F(xiàn)在,我們的詞袋模型正在處理大量不同單詞的詞匯,并且平等地對(duì)待所有單詞。然而,其中一些詞匯非常頻繁,而且只會(huì)對(duì)我們的預(yù)測(cè)產(chǎn)生干擾。接下來(lái),我們將嘗試一種表示句子的方法來(lái)解釋單詞的頻率,看看我們能否從數(shù)據(jù)中獲取更多的信號(hào)。

第6步:詞匯結(jié)構(gòu)計(jì)數(shù)

TF-IDF

為了幫助我們的模型更多地關(guān)注有意義的單詞,我們可以在我們的詞袋模型上使用TF-IDF score (Term Frequency, Inverse Document Frequency)。TF-IDF根據(jù)單詞在我們的數(shù)據(jù)集中的稀有程度來(lái)衡量單詞,對(duì)過(guò)于頻繁且只會(huì)增加噪音的單詞進(jìn)行減弱。這是我們新的嵌入的PCA投影。

手把手教你解決90%的NLP問(wèn)題

TF-IDF嵌入可視化

從上面我們可以看到,這兩種顏色的區(qū)別更加明顯。這將使我們的分類器更容易地將兩個(gè)組分開(kāi)。讓我們看看這是否會(huì)帶來(lái)更好的性能。在我們的新嵌入上訓(xùn)練另一個(gè)邏輯回歸,我們得到了76.2%的準(zhǔn)確率。

非常輕微的改善。我們的模型是否開(kāi)始學(xué)習(xí)更重要的單詞?如果我們?cè)诜乐鼓P?ldquo;作弊”的同時(shí)獲得了更好的結(jié)果,那么我們就可以真正地將該模型視為一個(gè)升級(jí)。

手把手教你解決90%的NLP問(wèn)題

TF-IDF:?jiǎn)卧~重要性

選到到的單詞看起來(lái)更相關(guān)了!盡管我們測(cè)試集上的準(zhǔn)確率只增加了一點(diǎn)點(diǎn),但是我們對(duì)我們的模型所使用的術(shù)語(yǔ)有了更多的信心,因此在一個(gè)與客戶交互的系統(tǒng)中部署它會(huì)更舒服。

第7步:語(yǔ)義的威力

Word2Vec

我們最新的模型能夠識(shí)別高頻詞。然而,如果我們部署這個(gè)模型,很有可能會(huì)遇到以前在我們的訓(xùn)練集中沒(méi)有見(jiàn)過(guò)的單詞。之前的模型不能準(zhǔn)確地對(duì)這些tweet進(jìn)行分類,即使在訓(xùn)練期間看到了非常相似的單詞

為了解決這個(gè)問(wèn)題,我們需要捕捉單詞的語(yǔ)義,這意味著我們需要理解像“good”和“positive”這樣的單詞要比“apricot”和“continent”更接近。我們用來(lái)幫助我們捕捉語(yǔ)義的工具叫做Word2Vec。

使用預(yù)訓(xùn)練的單詞

Word2Vec是一種為單詞尋找連續(xù)嵌入的技術(shù)。它通過(guò)閱讀大量的文本和記憶在相似的語(yǔ)境中出現(xiàn)的單詞來(lái)學(xué)習(xí)。在對(duì)足夠的數(shù)據(jù)進(jìn)行訓(xùn)練后,它為詞匯表中的每個(gè)單詞生成一個(gè)300維的向量,具有相似含義的單詞彼此之間距離更近。

這篇論文的作者(https://arxiv.org/abs/1301.3781)公開(kāi)了一個(gè)模型的源代碼,這個(gè)模型是在一個(gè)非常大的語(yǔ)料庫(kù)上預(yù)先訓(xùn)練的,我們可以利用這個(gè)語(yǔ)料庫(kù)將一些語(yǔ)義知識(shí)包含到我們的模型中。可以在與本文關(guān)聯(lián)的repository中找到預(yù)先訓(xùn)練好的向量。

語(yǔ)義級(jí)別的表示

為我們的分類器獲得一個(gè)句子嵌入的快速方法是平均我們句子中所有單詞的Word2Vec得分。這是一個(gè)詞袋的方法,就像以前一樣,但是這次我們只丟失了我們句子的語(yǔ)法,而保留了一些語(yǔ)義信息。

手把手教你解決90%的NLP問(wèn)題

Word2Vec句子的嵌入

使用之前的技術(shù)可視化的我們的新嵌入:

手把手教你解決90%的NLP問(wèn)題

Word2Vec嵌入可視化

這兩組顏色在這里看起來(lái)更加分離,我們的新嵌入應(yīng)該有助于我們的分類器找到這兩個(gè)類之間的分離。經(jīng)過(guò)第三次對(duì)同一模型的訓(xùn)練(Logistic回歸),我們得到的準(zhǔn)確率為77.7%,是我們目前最好的結(jié)果!是時(shí)候檢查我們的模型了。

復(fù)雜性和可解釋性的權(quán)衡

由于我們的嵌入不像之前的模型中那樣以每個(gè)單詞一維的向量來(lái)表示,所以很難看出哪些單詞與我們的分類最相關(guān)。雖然我們?nèi)匀豢梢栽L問(wèn)邏輯回歸的系數(shù),但它們與嵌入的300個(gè)維度有關(guān),而不是與單詞的索引有關(guān)。

對(duì)于如此低的精確度,失去所有的可解釋性似乎是一個(gè)艱難的權(quán)衡。但是,對(duì)于更復(fù)雜的模型,我們可以利用黑匣子解釋器,比如LIME,以便深入了解分類器的工作原理。

LIME

LIME可在Github上獲得通過(guò)一個(gè)開(kāi)源包。黑盒解釋器允許用戶通過(guò)擾動(dòng)輸入(在我們的例子中是從句子中刪除單詞)并查看預(yù)測(cè)如何變化來(lái)解釋任何分類器對(duì)一個(gè)特定示例的決策。

讓我們從我們的數(shù)據(jù)集中看一些句子的解釋。

手把手教你解決90%的NLP問(wèn)題

選擇正確的災(zāi)難詞匯來(lái)分類為“相關(guān)”。

手把手教你解決90%的NLP問(wèn)題

在這里,單詞對(duì)分類的貢獻(xiàn)似乎不那么明顯。

然而,我們沒(méi)有時(shí)間研究數(shù)據(jù)集中的數(shù)千個(gè)示例。相反,我們要做的是對(duì)一個(gè)具有代表性的測(cè)試用例樣本運(yùn)行LIME,并查看哪些單詞會(huì)不斷出現(xiàn),成為強(qiáng)大的貢獻(xiàn)者。使用這種方法,我們可以得到單詞重要性評(píng)分,就像我們之前的模型一樣,并驗(yàn)證我們的模型的預(yù)測(cè)。

手把手教你解決90%的NLP問(wèn)題

Word2Vec: 單詞重要性

看起來(lái)這個(gè)模型選擇了高度相關(guān)的詞匯,這意味著它似乎做出了可以理解的決定。在所有之前的模型中,這些似乎是最相關(guān)的詞匯,因此我們更愿意將它們部署到生產(chǎn)環(huán)境中。

第8步:利用語(yǔ)義,使用端到端的方法

我們已經(jīng)介紹了生成密集的語(yǔ)句嵌入的快速而有效的方法。然而,通過(guò)忽略單詞的順序,我們丟棄了我們句子的所有語(yǔ)法信息。如果這些方法不能提供足夠的結(jié)果,你可以使用更復(fù)雜的模型,它將整個(gè)句子作為輸入并預(yù)測(cè)標(biāo)簽,而不需要構(gòu)建中間表示。一種常見(jiàn)的方法是使用Word2Vec或更近期的方法如GloVe或CoVe將一個(gè)句子視為單個(gè)單詞向量的序列。這就是我們下面要做的。

手把手教你解決90%的NLP問(wèn)題

高效的端到端的結(jié)構(gòu)

Convolutional Neural Networks for Sentence Classification訓(xùn)練非常快,是一種入門(mén)級(jí)的深度學(xué)習(xí)架構(gòu)。而卷積神經(jīng)網(wǎng)絡(luò)(CNN)主要是圖像數(shù)據(jù)性能著稱,他們?cè)谖谋鞠嚓P(guān)的任務(wù)上也能提供優(yōu)秀的結(jié)果。和通常最復(fù)雜的NLP訓(xùn)練方法(如[LSTMs]和編碼器/解碼器架構(gòu)更快。這個(gè)模型保存單詞的順序,并學(xué)習(xí)有價(jià)值的信息,以及哪些單詞序列可以預(yù)測(cè)我們的目標(biāo)類。與之前的模型相反,它可以區(qū)分“Alex eats plants”和“Plants eat Alex”。

與以前的方法相比,訓(xùn)練這個(gè)模型并不需要更多的工作,并為我們提供了一個(gè)比以前的方法更好的模型,獲得79.5%的準(zhǔn)確率!與上面的模型一樣,下一步應(yīng)該是使用我們描述的方法探索和解釋預(yù)測(cè),以驗(yàn)證它確實(shí)是部署到用戶的最佳模型。到目前為止,你應(yīng)該已經(jīng)習(xí)慣了自己處理這個(gè)問(wèn)題。

要點(diǎn)總結(jié)

下面是我們成功使用的方法的快速回顧:

  • 從一個(gè)快速簡(jiǎn)單的模型開(kāi)始
  • 解釋其預(yù)測(cè)
  • 了解它正在犯的錯(cuò)誤
  • 使用這些知識(shí)來(lái)指導(dǎo)下一步,無(wú)論是處理數(shù)據(jù)還是更復(fù)雜的模型。

 

責(zé)任編輯:張燕妮 來(lái)源: AI公園
相關(guān)推薦

2018-03-23 20:45:23

機(jī)器學(xué)習(xí)NLP文本數(shù)據(jù)

2020-04-14 10:20:12

MySQL數(shù)據(jù)庫(kù)死鎖

2024-10-16 11:40:47

2024-03-11 08:00:00

位置偏差算法矩陣分解算法

2011-01-10 14:41:26

2025-05-07 00:31:30

2011-05-03 15:59:00

黑盒打印機(jī)

2017-12-01 05:01:35

WiFi干擾無(wú)線網(wǎng)絡(luò)

2021-07-14 09:00:00

JavaFX開(kāi)發(fā)應(yīng)用

2011-02-22 13:46:27

微軟SQL.NET

2021-02-26 11:54:38

MyBatis 插件接口

2021-12-28 08:38:26

Linux 中斷喚醒系統(tǒng)Linux 系統(tǒng)

2009-12-24 13:52:57

網(wǎng)絡(luò)接入控制解決方案

2021-07-13 10:17:25

GitHubLinux代碼

2021-09-26 16:08:23

CC++clang_forma

2022-07-27 08:16:22

搜索引擎Lucene

2022-01-08 20:04:20

攔截系統(tǒng)調(diào)用

2023-04-26 12:46:43

DockerSpringKubernetes

2022-03-14 14:47:21

HarmonyOS操作系統(tǒng)鴻蒙

2022-12-07 08:42:35

點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)