阿里飛豬搜索技術(shù)的應(yīng)用與創(chuàng)新
分享嘉賓:林睿 阿里飛豬
編輯整理:杜正海、Hoh
出品平臺(tái):DataFunTalk
導(dǎo)讀:旅行場(chǎng)景的搜索起初是為了滿足用戶某種特定的強(qiáng)需求而出現(xiàn)的,如機(jī)票、火車票、酒店等搜索。這些需求有著各自不同的特點(diǎn),傳統(tǒng)的旅行搜索往往會(huì)對(duì)不同業(yè)務(wù)進(jìn)行定制化搜索策略。隨著人工智能技術(shù)的不斷發(fā)展,用戶對(duì)產(chǎn)品的易用性提出了更高的要求。旅行場(chǎng)景的搜索逐漸發(fā)展為一個(gè)擁有旅行定制搜索策略的全文檢索引擎。本文將為大家介紹阿里飛豬在旅行場(chǎng)景下搜索技術(shù)的應(yīng)用與創(chuàng)新,主要內(nèi)容包括:
-
豬搜背景
-
基礎(chǔ)建設(shè)
-
召回策略
-
思考總結(jié)
1. 飛豬搜索
飛豬搜索業(yè)務(wù)分為兩大部分:一是全局搜索,二是行業(yè)小搜。右邊飛豬界面的全局搜索就是最上方的輸入框。直接對(duì)應(yīng)飛豬內(nèi)部所有內(nèi)容的搜索入口,都可以從全局搜索獲得。右圖中間部分就是產(chǎn)業(yè)小搜的垂直入口。比如搜索酒店機(jī)票和旅游度假產(chǎn)品,一般用戶會(huì)使用行業(yè)小搜,垂直搜索需求。隨著飛豬業(yè)務(wù)的發(fā)展,以及用戶需求的變化,流量會(huì)從行業(yè)小搜逐漸遷移到飛豬的全局搜索上。主要是因?yàn)椋?/span>
-
旅游行業(yè)是一個(gè)跨類目的需求。用戶天然的需要定機(jī)票、酒店以及一些網(wǎng)絡(luò)的門(mén)票,如果全部通過(guò)垂直搜索,需要進(jìn)行多次點(diǎn)擊,對(duì)用戶來(lái)說(shuō)不是很方便。
-
飛豬很多流量是由手淘引流過(guò)來(lái)的,手淘是一個(gè)全局的搜索。所以用戶會(huì)習(xí)慣性的使用全局搜索來(lái)滿足他的需求。
-
對(duì)用戶來(lái)說(shuō),用全局搜索的操作是最方便的,路徑最短。
2. 豬搜框架
豬搜框架如圖所示,首先通過(guò)調(diào)用QP來(lái)獲得當(dāng)前的Query理解,以及需要召回的Query生成,然后通過(guò)SP分頁(yè)服務(wù)調(diào)用HA3倒排索引來(lái)獲取召回的結(jié)果。通過(guò)粗排序和加權(quán)排序?qū)⒔Y(jié)果通過(guò)LTP服務(wù)做重排序,最后將得到的結(jié)果展示給用戶。這里主要介紹下QP的工作。
3. QP
QP即Query理解與召回生成服務(wù)。在這個(gè)服務(wù)中,我們面臨的挑戰(zhàn)主要有:
-
性能限制:在業(yè)界,通常QP階段只占用整個(gè)線上響應(yīng)時(shí)間的1/10。所以,對(duì)性能要求比較高,響應(yīng)時(shí)間不能過(guò)長(zhǎng),需要提供良好的線上服務(wù)體驗(yàn)。
-
文本理解:我們的QP和其他的全局搜索QP一樣,也需要做傳統(tǒng)的文本理解,提供文本相關(guān)性的能力。
-
獨(dú)有挑戰(zhàn):在旅行場(chǎng)景下,會(huì)有一些特殊的要求。比如LBS與POI的理解能力,能夠提供空間上的相關(guān)性。
-
特征理解:從業(yè)務(wù)發(fā)展角度,我們還需要用戶特征的理解,可以提供個(gè)性化的相關(guān)性,來(lái)滿足用戶的需求。
接下來(lái),為大家介紹下飛豬在具體基礎(chǔ)建設(shè)上的一些工作。
1. Query tagging
Tagging是QP中的一個(gè)基礎(chǔ)任務(wù)。負(fù)責(zé)的功能是把一個(gè)query 打出目的地和意圖。舉個(gè)例子,“北京自由行”中“北京”就是用戶的目的地,“自由行”是用戶的意圖需求,可以看出用戶希望的是一個(gè)自由行的商品,而不是跟團(tuán)游這類的產(chǎn)品,可能會(huì)更希望獲得一些機(jī)票+酒店或者是無(wú)購(gòu)物的產(chǎn)品。
這里的工作,主要分為以下幾層:
-
數(shù)據(jù)層:通過(guò)離線挖掘出tagging詞庫(kù)。
-
算法層:通過(guò)Tag消歧、CRF等算法進(jìn)行在線打標(biāo)工作。
-
應(yīng)用層:在tagging上的一些應(yīng)用,如query丟詞和query改寫(xiě)。
由于線上性能的限制,我們主要依賴于離線的挖掘。這里以我們內(nèi)部比較重要的商品POI挖掘?yàn)槔瑏?lái)介紹下我們離線挖掘tagging 的工作。
2. 商品POI挖掘
① QueryTagging
POI的挖掘除了商品title 可能會(huì)有一些景點(diǎn)信息外,詳情也會(huì)包含大量的信息。因此,我們需要從這些內(nèi)容中挖掘出有價(jià)值的信息,來(lái)擴(kuò)充詞表。例如圖中的景點(diǎn)POI,可以用作索引參與召回,但是詳情是非結(jié)構(gòu)化的HTML文本,要挖掘POI實(shí)體,會(huì)有比較大的難度。
② 建模方式
我們采用了典型的序列標(biāo)注問(wèn)題來(lái)解決這個(gè)問(wèn)題。我們通過(guò)一些特征,如詞特征、數(shù)字特征、類目特征,進(jìn)行篩選,通過(guò)人工標(biāo)注來(lái)訓(xùn)練我們的CRF++模型。后續(xù)我們還升級(jí)成了Template下的模型來(lái)訓(xùn)練NER模型,使我們可以在離線,對(duì)接了大量的文本數(shù)據(jù),進(jìn)行序列標(biāo)注。最終,我們達(dá)到了99%以上的準(zhǔn)確率,召回率也超過(guò)95%。擴(kuò)充了大量的沒(méi)有挖掘出POI商品/POI特征的度假商品,使它們產(chǎn)生了POI的特征,可以更好地為后續(xù)的POI及檢索做出服務(wù)。
3. 同義詞挖掘
在旅行行業(yè),存在四種類型的同義詞:
-
翻譯類:如“迪斯尼”,可能有不同的中文描述方式
-
中英文詞:有的用戶用英文來(lái)描述,而有的用戶用中文來(lái)表述,但是商家描述的title是英文
-
包含關(guān)系:比如“普吉”和“普吉島”,可能“普吉”這個(gè)POI是“普吉島”這個(gè)大POI下的子POI
-
錯(cuò)別字:比如“國(guó)色天香”,在圖中應(yīng)該是“國(guó)色天鄉(xiāng)”
我們希望可以用一個(gè)通用的模型來(lái)解決這種同義詞關(guān)系。
我們的辦法是基于用戶點(diǎn)擊行為,拼接query和商品title,使得query和title中的詞形成上下文,然后基于word2vec的skip-gram模型,得到每個(gè)詞的詞向量,并基于語(yǔ)義相似性,產(chǎn)生每個(gè)詞top 20的候選,同時(shí)將問(wèn)題轉(zhuǎn)換為二分類問(wèn)題。
另外,在特征工程上,我們會(huì)利用中英文的編輯距離、共現(xiàn)數(shù)目以及是否包含關(guān)系、余弦相似度等來(lái)構(gòu)建特征。
然后,我們通過(guò)人工標(biāo)注來(lái)構(gòu)建正樣本,負(fù)樣本按照編輯距離倒排隨機(jī)采樣,使用LR模型和XGBoost對(duì)標(biāo)注好的樣本進(jìn)行二分類。
最后,我們還會(huì)經(jīng)過(guò)一層人工審核,因?yàn)橥x詞的影響面積比較大,如果直接通過(guò)算法挖掘,在線上的效果可能不會(huì)特別好。所以我們沒(méi)有采用復(fù)雜的模型,只是夠用就可以了。這樣在萬(wàn)級(jí)別的人工標(biāo)注上,我們的準(zhǔn)確率可以達(dá)到94%。
4. 糾錯(cuò)
① 背景
對(duì)于糾錯(cuò),剛才提到了詞級(jí)別的錯(cuò)誤,事實(shí)上,整個(gè)Query中也會(huì)出現(xiàn)一些錯(cuò)誤。只用詞級(jí)別的糾錯(cuò),不能滿足用戶需求,需要一個(gè)全query糾錯(cuò)邏輯。
由于QP階段對(duì)性能要求很高,現(xiàn)在業(yè)界常用的seq2seq方法,雖然效果很好,但整體性能不達(dá)標(biāo)。我們可以在離線利用seq2seq來(lái)挖掘高頻的信息,但在線上很難應(yīng)用seq2seq的方法來(lái)做糾錯(cuò)。
② 方案
我們的方案是采用傳統(tǒng)的隱馬爾科夫模型,基于統(tǒng)計(jì)的方式來(lái)做,能夠達(dá)到線上的性能要求。將錯(cuò)誤分為同音字與形近字,可以獲得比較強(qiáng)的可解釋性。
-
同音字:因?yàn)闈h字都可以查到拼音碼表,我們可以很容易的構(gòu)建一個(gè)同音字的集合,然后通過(guò)一些統(tǒng)計(jì)的方式,就能獲得同音詞生成概率。
-
形近字:比較難獲得,因?yàn)楹茈y判斷兩個(gè)字是否有些相似。我們這里,通過(guò)字體圖像和字體結(jié)構(gòu)來(lái)解決的。
③ 基于圖像
說(shuō)到基于圖像的方式,最直接的方式就是基于CNN圖像網(wǎng)絡(luò)的匹配算法。但是出于性能方面的考慮,這種方法的效果往往達(dá)不到我們的性能要求,所以我們采用了一個(gè)比較簡(jiǎn)單且有效的方法,就是我們直接對(duì)兩個(gè)可能形近的字的圖像進(jìn)行計(jì)算。對(duì)形近字而言,我們?cè)跇?biāo)準(zhǔn)的字體庫(kù)中,發(fā)現(xiàn)它有兩個(gè)特點(diǎn):
如鳥(niǎo)和烏兩個(gè)字,在字體庫(kù)里的圖直接對(duì)比,它們的重合度是非常高的,由于字體庫(kù)里的字,它的標(biāo)準(zhǔn)化程度是很高的,可以通過(guò)這種方式來(lái)進(jìn)行計(jì)算。我們這里基于圖像的方式,就是采用我們對(duì)字體庫(kù)里的兩個(gè)字來(lái)進(jìn)行每個(gè)點(diǎn)的一個(gè)具體的計(jì)算。
另外,對(duì)于鳥(niǎo)和烏這個(gè)字,鳥(niǎo)這個(gè)字的每一個(gè)點(diǎn)在烏字上找到和它最近的一個(gè)點(diǎn),作為這兩個(gè)點(diǎn)相似度,那對(duì)于每一個(gè)點(diǎn),我們都可以找到一個(gè)距離,然后通過(guò)求和的均值計(jì)算,我們就可以得到這個(gè)兩個(gè)字距離的相似度。
通過(guò)離線對(duì)兩個(gè)字以各自的圖像進(jìn)行計(jì)算,那就可以獲得比較相似的一些字。
④ 基于字體結(jié)構(gòu)
另外,我們還會(huì)通過(guò)字體結(jié)構(gòu)的方式來(lái)進(jìn)行計(jì)算。像倉(cāng)頡、鄭碼、四角號(hào)碼的編碼,是基于這個(gè)字的情況來(lái)做的編碼。對(duì)于倆個(gè)形近字,它們的倉(cāng)頡碼、鄭碼、四角號(hào)碼往往也會(huì)比較相似。所以,我們通過(guò)序列的相似計(jì)算,可以獲得這兩個(gè)形近字的相似度,然后通過(guò)相似度進(jìn)行閾值計(jì)算,就可以得到字形相似的集合。
接下來(lái)為大家介紹下飛豬在召回策略上的一些技術(shù):
航旅召回跟常用的搜索召回有相似的地方,也有不同,面臨的挑戰(zhàn)主要有:
-
用戶query和商品描述之間存在GAP
-
航旅商品僅百萬(wàn)級(jí),而且城市分割,很容易造成無(wú)結(jié)果
-
召回優(yōu)化時(shí),很容易導(dǎo)致誤召回
-
旅行是低頻行為,用戶行為稀疏,算法樣本較少
鑒于這種情況,我們對(duì)用戶的召回分成了以下四種召回方式:經(jīng)典召回(同義詞挖掘、相似query改寫(xiě)、商品POI挖掘)、LBS召回、向量召回、個(gè)性化召回(I2I&U2I以及向量模型),來(lái)滿足用戶的需求。
1. 經(jīng)典召回
剛剛已經(jīng)介紹過(guò)同義詞挖掘和商品POI挖掘,這里主要介紹下相似query改寫(xiě)。以“上海迪士尼樂(lè)園門(mén)票”為例,其實(shí)標(biāo)準(zhǔn)的商品是“上海迪士尼度假區(qū)”,而“黃山風(fēng)景區(qū)”的標(biāo)準(zhǔn)商品其實(shí)是“黃山”。在這樣的情況下,如果我們直接創(chuàng)建搜索,可能召回的效果比較差。因而,我們會(huì)進(jìn)行一些相似query挖掘,來(lái)滿足這種query和title GAP的情況。
Learning To Rewrite:
我們思路是使用多路改寫(xiě)產(chǎn)生候選集合,然后用learning to Rank 選取top K結(jié)果。
首先假設(shè)用戶在篩選中輸入了query,這個(gè)query是比較相似的。因?yàn)橛脩粼诤Y選中是想要獲得他想要的結(jié)果。如果用戶第一個(gè)query,沒(méi)有得到想要的結(jié)果,用戶會(huì)進(jìn)行一些改寫(xiě)。就相當(dāng)于用戶幫助我們完成了一次改寫(xiě),我們從中可以學(xué)到用戶改寫(xiě)的信息。這里我們是用類似word2vec的模型實(shí)現(xiàn)的。
另外,從query相似度來(lái)看,我從文本上也可以獲得一個(gè)相似的query文本。這里我們采用的是doc2vec模型,來(lái)獲得文本相似性。
最后,通過(guò)query和title點(diǎn)擊,可以訓(xùn)練一個(gè)雙塔結(jié)構(gòu)的語(yǔ)義相似度模型,來(lái)獲得query和title相似性的特征。
通過(guò)這三種方式,我們可以獲得想要的相似query改寫(xiě)的候選。
對(duì)于候選,通過(guò)一些人工標(biāo)注及線上的埋點(diǎn)信息,來(lái)獲得原query和候選query相似的標(biāo)注。這樣我們就可以訓(xùn)練一個(gè)模型來(lái)進(jìn)行相似query的排序工作。
最終,我們線上使用的模型是PS-SMART 模型。加上規(guī)則過(guò)濾之后,準(zhǔn)確率可以達(dá)到99%??梢杂绊懢€上36%的PV,對(duì)一次UV的無(wú)結(jié)果率可以相對(duì)降低18%。
2. 航旅特色召回:LBS召回
由于用戶是在旅行場(chǎng)景下搜索,用戶天然會(huì)需要LBS 相關(guān)的信息。如果是差旅用戶,可能會(huì)定阿里巴巴園區(qū)附近的酒店,如果是旅游用戶,可能會(huì)定黃山風(fēng)景區(qū)附近的酒店。這就需要識(shí)別用戶想要的商品大概在什么樣的LBS范圍內(nèi)。解決的方法是通過(guò)對(duì)query中用戶POI的識(shí)別,獲取用戶的經(jīng)緯度,進(jìn)行召回上的限制。
建模過(guò)程:
首先會(huì)對(duì)query進(jìn)行常規(guī)的分詞,然后在POI專用的倒排索引庫(kù)進(jìn)行檢索,獲得候選POI。接下來(lái)對(duì)候選POI query進(jìn)行特征計(jì)算,計(jì)算出文本相似性、embedding相似距離,以及用戶當(dāng)前位置輸入后,與歷史點(diǎn)擊的商品地點(diǎn)的距離做特征。然后用特征構(gòu)建模型算出一個(gè)分?jǐn)?shù),通過(guò)一定的閾值得到結(jié)果。
最后,我們的準(zhǔn)確率可以達(dá)到95%,GMV和成交都得到了一定的提升。
3. 深度召回:向量召回
① 背景
前面提到的都是一些簡(jiǎn)單的文本召回,以及LBS召回等偏傳統(tǒng)的方法。前面說(shuō)過(guò),我們的商品按照目的地切換后,還是很稀疏,還會(huì)存在無(wú)召回的情況。對(duì)于這種情況,我們想到引入向量召回的方式進(jìn)行補(bǔ)充召回??梢愿采w改寫(xiě)沒(méi)有的情況,可以召回一些原來(lái)不能召回的產(chǎn)品。
② 向量召回整體架構(gòu)
向量召回架構(gòu)如上圖。在線通過(guò)對(duì)query 進(jìn)行embedding。離線通過(guò)HA3引擎,把所有的item embedding存儲(chǔ)到HA3引擎中。最后,SP通過(guò)從QP獲得query embedding,進(jìn)行HA3檢索,獲得需要的商品。
③ 模型結(jié)構(gòu)
模型結(jié)構(gòu),如上所示:
-
query側(cè):通過(guò)對(duì)query的文本,進(jìn)行卷積層特征抽取。
-
商品側(cè):我們主要的工作在這里,除了文本上對(duì)用戶目的地的需求,對(duì)商品類目的需求也是比較關(guān)注的。所以在商品特征上,使用了商品title文本的卷積特征,以及目的地類目id 的特征。
對(duì)這三個(gè)特征,我們沒(méi)有使用簡(jiǎn)單的concat,而是使用了tensor fusion進(jìn)行三個(gè)向量的外積,可以讓特征更好的融合。
最后,通過(guò)全鏈接層進(jìn)行特征抽取,計(jì)算向量?jī)?nèi)積。
對(duì)于損失函數(shù),我們使用的large margin loss。對(duì)于學(xué)的足夠充分的case ,就丟棄掉,不再進(jìn)行學(xué)習(xí),讓模型更快的達(dá)到我們想要的效果。
④ 樣本選擇
在樣本選擇上,我們對(duì)正負(fù)樣本也做了一些探索。
集團(tuán)內(nèi)通用的方法:
-
正樣本:query下用戶點(diǎn)擊的商品
-
負(fù)樣本:未點(diǎn)擊的商品
這樣的方法更適合在排序上使用,而不太適合召回。以左圖為例,用戶點(diǎn)擊了“上海迪士尼度假區(qū)”,未點(diǎn)擊的是下面的商品,雖然可能是由于商品的標(biāo)題標(biāo)準(zhǔn)化比較低,用戶未點(diǎn)擊,但不能說(shuō)它是不相關(guān)的商品。
我們的方法:
-
正樣本:和集團(tuán)一樣,使用點(diǎn)擊的商品
-
負(fù)樣本:隨機(jī)選取的樣本作為負(fù)樣本
使用隨機(jī)選擇有兩方面:一是在全量商品中,進(jìn)行隨機(jī)選擇;二是在一個(gè)類目或者目的地下,進(jìn)行隨機(jī)選擇。這樣可以提升訓(xùn)練的難度,達(dá)到我們想要的效果。
⑤ 模型產(chǎn)出與使用方式
最終產(chǎn)出的分?jǐn)?shù),也給排序使用了,作為排序的一個(gè)特征,取得了不錯(cuò)的效果,可以排在第4位。另外,線上召回可以讓無(wú)結(jié)果率降低32.7%。同時(shí),擴(kuò)充了1.7倍的相似query。
4. 個(gè)性化召回
為什么做個(gè)性化召回?
因?yàn)樵诼眯袌?chǎng)景下,會(huì)存在一些泛需求搜索。比如搜杭州,我們會(huì)對(duì)杭州所有的商品和酒店進(jìn)行召回。這樣大量的召回會(huì)給后面的排序造成很大的壓力,沒(méi)辦法根據(jù)用戶的query排出一個(gè)用戶想要的item。
另外,還有一種情況是用戶搜索的意圖不是很明確,可能會(huì)存在一些無(wú)結(jié)果的情況。對(duì)于這種情況,傳統(tǒng)的文本相似性、深度召回都無(wú)法召回的情況下,可以嘗試個(gè)性化的方式,給用戶推薦一些商品,直接展示在搜索結(jié)果中,提供補(bǔ)充,來(lái)提升用戶體驗(yàn)。實(shí)踐證明,用戶也會(huì)對(duì)這類商品進(jìn)行點(diǎn)擊和購(gòu)買。
我們的方案有兩種方式:
-
引入推薦的召回結(jié)果,在此基礎(chǔ)上進(jìn)行相關(guān)性粗排,得到個(gè)性化召回
-
構(gòu)建了個(gè)性化專用的向量召回模型,來(lái)得到更好的個(gè)性化召回結(jié)果
整體的方式是將召回池分為個(gè)性化召回和文本召回兩路:
-
個(gè)性化召回:通過(guò)推薦的重定向、i2i 、lbs2i以及屬性2i等方式,來(lái)獲得推薦召回結(jié)果。
-
文本相關(guān)性過(guò)濾:通過(guò)文本相關(guān)性的過(guò)濾(如關(guān)鍵詞命中和向量cos相似度),把推薦召回和當(dāng)前用戶搜索query很不相關(guān)的item過(guò)濾掉,展現(xiàn)給用戶比較相關(guān),也是通過(guò)用戶i2i擴(kuò)展的結(jié)果。
個(gè)性化召回模型:
-
在用戶側(cè),通過(guò)用戶畫(huà)像屬性和用戶的query,進(jìn)行特征抽取。另外,我們引入了用戶操作序列,來(lái)達(dá)到個(gè)性化目的。比如用戶最近搜索時(shí),查看的商品、點(diǎn)擊的商品、加購(gòu)的商品以及成交的商品,這些操作的商品序列,引入到模型中。然后通過(guò)用戶畫(huà)像和用戶query特征向量,對(duì)用戶歷史操作序列做attention,就能夠從用戶操作序列中取出跟用戶當(dāng)前搜索最相關(guān)的商品特征,來(lái)滿足用戶當(dāng)前搜索的需求。
-
在商品側(cè),也會(huì)引入商品特征。如商品title、商品目的地、商品類目等特征,作為商品的優(yōu)選,然后獲得一個(gè)向量。
-
在上層,我們采用剛剛提到的tensor fusion來(lái)進(jìn)行特征融合,讓不同的特征更好的融合。
模型優(yōu)化:
在深度向量召回上,對(duì)文本的特征采用卷積模型進(jìn)行抽取。這里并沒(méi)有采用卷積,而是采用了簡(jiǎn)單的詞向量concat 方式。這是因?yàn)橥ㄟ^(guò)實(shí)驗(yàn)驗(yàn)證,使用卷積學(xué)到的文本特征比較強(qiáng),整體的個(gè)性化效果比較弱,這不是我們希望見(jiàn)到的。所以我們采用了減弱文本特征的限制,突出個(gè)性化特征帶來(lái)的額外檢索效果。
最后,是我們對(duì)工作的思考總結(jié):
1. Query & User Planer
現(xiàn)在我們還是叫QP,后續(xù)我們希望升級(jí)成Query & User Planer,能夠更多的融合用戶特征,增加更多的個(gè)性化搜索能力。
2. 可解釋性升級(jí)
我們希望對(duì)搜索的可解釋性進(jìn)行升級(jí),不是簡(jiǎn)單的用文本或者深度向量直接進(jìn)行召回。我們希望對(duì)用戶的意圖,進(jìn)行更多維度、更細(xì)力度的理解,能夠直接理解成人類可讀的意圖。
另外,我們希望對(duì)用戶的行為做預(yù)測(cè)。因?yàn)橛脩?/span>搜杭州時(shí),可能根據(jù)歷史點(diǎn)擊推出來(lái)的商品也不能滿足用戶需求。我們后續(xù)希望對(duì)這類query,能夠預(yù)測(cè)出用戶想去的景點(diǎn)。當(dāng)用戶搜酒店時(shí),可以預(yù)測(cè)出用戶想去的目的地,更好的滿足用戶需求。
今天的分享就到這里,謝謝大家。
免責(zé)聲明:本文內(nèi)容由21ic獲得授權(quán)后發(fā)布,版權(quán)歸原作者所有,本平臺(tái)僅提供信息存儲(chǔ)服務(wù)。文章僅代表作者個(gè)人觀點(diǎn),不代表本平臺(tái)立場(chǎng),如有問(wèn)題,請(qǐng)聯(lián)系我們,謝謝!