久久亚洲成a人片熟女精品色一区二区三区|国产精品视频第一精品视频|av天堂热无码手机版|亚洲?v无码久久无遮挡|国产精品偷伦视频免费观看国产|麻豆国产自产精品丰满熟妇|av无码av不卡一区二区|久久亚洲精品中文字

ARTICLE DETAIL

資訊詳情

深耕商務(wù)建站與企業(yè)官網(wǎng)運(yùn)營(yíng)的一線實(shí)戰(zhàn)洞察。

文本歸一化與規(guī)則引擎:營(yíng)銷引流文本檢測(cè)實(shí)戰(zhàn)

文本歸一化與規(guī)則引擎:營(yíng)銷引流文本檢測(cè)實(shí)戰(zhàn) 在日常社區(qū)運(yùn)營(yíng)和內(nèi)容審核的對(duì)接中一類高頻出現(xiàn)的文本總是讓人頭疼賬號(hào)在評(píng)論區(qū)、商品問(wèn)答區(qū)、私信入口批量投放“哈嘍我們是源頭工廠有需要就找我呀”這類攬客話術(shù)。它不算明顯的違規(guī)廣告單看每個(gè)字都很正常但架不住量大、變體多、人工審不完。本文就以此為切入點(diǎn)完整實(shí)現(xiàn)一個(gè)可運(yùn)行的營(yíng)銷引流文本檢測(cè)小工具從文本歸一化、規(guī)則設(shè)計(jì)、權(quán)重打分到配置外置、灰度上線全流程拆解。讀者不需要機(jī)器學(xué)習(xí)基礎(chǔ)只要會(huì)寫(xiě) Python 函數(shù)就能跟著跑通已經(jīng)做過(guò)內(nèi)容風(fēng)控的同學(xué)也可以直接拿去對(duì)照自己的規(guī)則庫(kù)查漏補(bǔ)缺。1. 從一個(gè)真實(shí)場(chǎng)景說(shuō)起營(yíng)銷引流文本為什么需要工程化治理先把問(wèn)題定義清楚。所謂“營(yíng)銷引流文本”指的是那些目標(biāo)明確、但表述上刻意模糊的商業(yè)推廣內(nèi)容自稱廠家、批發(fā)、一手貨源引導(dǎo)用戶離開(kāi)當(dāng)前平臺(tái)去私下溝通制造限時(shí)緊迫感等等。這類內(nèi)容在電商評(píng)論區(qū)、二手交易區(qū)、內(nèi)容社區(qū)、在線客服會(huì)話里都非常常見(jiàn)。它和傳統(tǒng)意義上的垃圾廣告有幾個(gè)明顯區(qū)別也正因?yàn)檫@些區(qū)別簡(jiǎn)單的關(guān)鍵詞黑名單很難奏效。1.1 這類文本的三個(gè)技術(shù)特征第一個(gè)特征是詞匯本身是正常詞。“源頭工廠”“批發(fā)價(jià)”“有需要找我”這些詞單獨(dú)拎出來(lái)在正規(guī)的商品描述、售后說(shuō)明、用戶提問(wèn)里都會(huì)出現(xiàn)。你把“源頭工廠”整個(gè)拉黑第二天就會(huì)收到一堆誤傷投訴。所以規(guī)則必須建立在詞組組合上而不是單詞上。第二個(gè)特征是變體成本極低。加個(gè)全角字母、塞幾個(gè)零寬字符、把“微信”寫(xiě)成“薇信”、把漢字重復(fù)幾遍都能在不改變?nèi)搜坶喿x效果的前提下繞過(guò)字面匹配。這一點(diǎn)在后文會(huì)專門(mén)用一節(jié)講文本歸一化因?yàn)檫@是所有文本風(fēng)控的第一道地基。第三個(gè)特征是分級(jí)困難。一句“我是源頭工廠歡迎咨詢”到底該直接攔截還是人工復(fù)核如果全部攔截誤傷率會(huì)高到業(yè)務(wù)方無(wú)法接受如果全部放過(guò)等于沒(méi)做。實(shí)際工程里必須有中間檔位也就是“疑似”狀態(tài)把判斷權(quán)交給人。1.2 幾種常見(jiàn)方案的邊界對(duì)比在動(dòng)手寫(xiě)代碼之前先看清楚幾種技術(shù)路線的適用邊界避免一上來(lái)就選錯(cuò)工具。方案實(shí)現(xiàn)成本可解釋性變體對(duì)抗能力適合階段純關(guān)鍵詞黑名單極低強(qiáng)很弱冷啟動(dòng)、兜底歸一化 組合正則低強(qiáng)中等規(guī)則庫(kù)主力詞向量/文本分類模型高弱強(qiáng)有標(biāo)注數(shù)據(jù)后大模型語(yǔ)義判別中中強(qiáng)增量補(bǔ)充、復(fù)核輔助需要強(qiáng)調(diào)的是這幾條路線不是替代關(guān)系而是疊加關(guān)系。一個(gè)成熟的文本風(fēng)控系統(tǒng)通常是歸一化打底規(guī)則引擎跑主力模型負(fù)責(zé)兜底和兜住長(zhǎng)尾人工復(fù)核處理爭(zhēng)議樣本最后把復(fù)核結(jié)果回流成新的規(guī)則和訓(xùn)練數(shù)據(jù)。本文聚焦第二條路線因?yàn)樗亲钊菀自趦芍軆?nèi)上線、并且效果立刻可量化的方案。對(duì)于日均評(píng)論量在幾萬(wàn)到幾十萬(wàn)量級(jí)的業(yè)務(wù)一套設(shè)計(jì)良好的規(guī)則引擎能得到超過(guò)八成的問(wèn)題召回誤傷也完全可控。1.3 本文要實(shí)現(xiàn)的系統(tǒng)能力具體來(lái)說(shuō)我們要做的東西包含這幾個(gè)能力點(diǎn)輸入一條原始文本輸出一個(gè) 0 到 100 的分?jǐn)?shù)以及block/review/pass三檔結(jié)論。支持解釋不僅告訴你“這條有問(wèn)題”還要告訴你“命中了哪條規(guī)則、命中了哪幾個(gè)字”。支持配置化規(guī)則庫(kù)不寫(xiě)死在代碼里能通過(guò)文件修改并生效。支持批量與單條兩種調(diào)用方式便于本地調(diào)試和接入服務(wù)。附帶單元測(cè)試保證改了規(guī)則之后不會(huì)悄悄把已有能力改壞。下面進(jìn)入環(huán)境準(zhǔn)備。2. 環(huán)境準(zhǔn)備與項(xiàng)目結(jié)構(gòu)2.1 運(yùn)行環(huán)境與依賴選擇這個(gè)項(xiàng)目刻意只使用 Python 標(biāo)準(zhǔn)庫(kù)原因很實(shí)際內(nèi)容審核往往要嵌到已有的服務(wù)里多引一個(gè)第三方包就多一份版本沖突風(fēng)險(xiǎn)和供應(yīng)鏈風(fēng)險(xiǎn)。re、unicodedata、json、argparse、unittest全部?jī)?nèi)置裝好 Python 就能跑。環(huán)境說(shuō)明Python 版本建議使用 3.8 及以上。本文用到的dataclasses在 3.7 之后是標(biāo)準(zhǔn)庫(kù)f-string 的格式說(shuō)明符在 3.6 之后可用。具體小版本請(qǐng)按你自己的項(xiàng)目統(tǒng)一這里不寫(xiě)死。操作系統(tǒng)Windows、macOS、Linux 均可代碼中沒(méi)有平臺(tái)相關(guān)調(diào)用。編輯器PyCharm、VS Code 都行建議開(kāi)啟保存時(shí)自動(dòng)格式化。不需要數(shù)據(jù)庫(kù)、不需要 Web 框架全部邏輯跑在單進(jìn)程內(nèi)存里。如果你后續(xù)要接到 Flask / FastAPI 的接口里直接把RuleEngine實(shí)例掛在應(yīng)用啟動(dòng)階段初始化一次即可規(guī)則編譯是一次性的運(yùn)行期只有正則匹配開(kāi)銷。2.2 目錄結(jié)構(gòu)設(shè)計(jì)項(xiàng)目結(jié)構(gòu)如下保持扁平方便直接復(fù)制text_guard_demo/ ├── text_guard/ │ ├── __init__.py │ ├── normalize.py │ ├── rules.py │ ├── engine.py │ └── cli.py ├── config/ │ └── rules.json ├── samples.txt └── tests/ └── test_engine.py這里的分層是按職責(zé)切的normalize.py只負(fù)責(zé)把文本洗干凈rules.py只放規(guī)則數(shù)據(jù)engine.py負(fù)責(zé)匹配和打分cli.py只做輸入輸出。這樣切的好處是將來(lái)你想把規(guī)則換成模型只動(dòng)engine.py想把規(guī)則換成數(shù)據(jù)庫(kù)下發(fā)只動(dòng)rules.py的加載邏輯。很多人在寫(xiě)這類小工具時(shí)喜歡全塞在一個(gè)文件里調(diào)試時(shí)舒服上線后維護(hù)會(huì)很痛苦。2.3 安裝與運(yùn)行方式創(chuàng)建目錄并初始化mkdir -p text_guard_demo/text_guard text_guard_demo/config text_guard_demo/tests cd text_guard_demo touch text_guard/__init__.py tests/__init__.py__init__.py可以為空它的作用是讓text_guard成為一個(gè)包這樣python -m text_guard.cli才能正常找到模塊。tests/__init__.py同理方便測(cè)試發(fā)現(xiàn)。運(yùn)行單元測(cè)試python -m unittest discover -s tests -v運(yùn)行命令行工具python -m text_guard.cli -t 哈嘍我們是源頭工廠有需要就找我呀下面開(kāi)始寫(xiě)真正的邏輯。3. 文本歸一化把變體拉回可比較的形態(tài)3.1 為什么歸一化是第一步先看一組例子。下面這五條文本人一眼就能看出是同一句話但字符串比較的結(jié)果全是“不相等”哈嘍我們是源頭工廠有需要就找我呀 哈嘍,我們是源頭工廠,有需要就找我呀 哈嘍我們是源頭工廠有需\u200b要就找我呀 哈嘍我們是源頭工廠有需要要要找我呀 哈嘍我們是源頭工廠有需要就找我丫第一條用的是全角逗號(hào)第二條用半角逗號(hào)第三條中間插了一個(gè)零寬空格U200B第四條把“要”重復(fù)了三遍第五條把“呀”換成了字形接近的“丫”。如果你把規(guī)則寫(xiě)成re.search(有需要就找我, text)只有第一條能命中。這不是規(guī)則寫(xiě)得不對(duì)而是輸入沒(méi)有對(duì)齊。所以歸一化的定位不是“美化文本”而是把所有等價(jià)寫(xiě)法映射到同一個(gè)可比較形態(tài)把對(duì)抗成本從規(guī)則方轉(zhuǎn)移回發(fā)布方。3.2 三類必須處理的字符噪聲第一類全角與兼容字符。全角字母到、全角數(shù)字到、全角標(biāo)點(diǎn)、帶圈數(shù)字、羅馬數(shù)字都屬于 Unicode 的兼容字符區(qū)。Python 的unicodedata.normalize(NFKC, text)可以把它們統(tǒng)一折疊成常見(jiàn)形態(tài)。這個(gè)函數(shù)不需要額外依賴一次調(diào)用就能把大量“換皮”寫(xiě)法拉平。需要注意的是NFKC 是冪等的重復(fù)調(diào)用結(jié)果不變所以在整條流水線里調(diào)一次就夠不必每步都調(diào)。第二類不可見(jiàn)字符。零寬空格U200B、零寬非連接符U200C、零寬連接符U200D、左右方向標(biāo)記U200E、U200F、字節(jié)序標(biāo)記UFEFF、軟連字符U00AD這些字符在終端里看不見(jiàn)卻真實(shí)存在于字符串中。用正則把這些區(qū)間整體刪掉即可。同時(shí)把 ASCII 控制字符除\t、\n、\r外也一并清理避免日志里出現(xiàn)亂碼。第三類夸張重復(fù)。把某個(gè)漢字重復(fù)兩三次是極常見(jiàn)的規(guī)避手法。處理方式是用反向引用壓縮連續(xù)三個(gè)及以上相同字符折疊成一個(gè)。這里有一個(gè)細(xì)節(jié)必須注意——數(shù)字不能壓縮。如果你無(wú)腦用(.)\1{2,}那么“最后100件”會(huì)被壓成“最后10件”價(jià)格和型號(hào)信息就丟了后續(xù)如果要做數(shù)量識(shí)別會(huì)出錯(cuò)。所以正則里要把數(shù)字和空白排除掉。3.3 歸一化順序?yàn)槭裁床荒茈S意調(diào)換歸一化的每一步都有先后依賴順序錯(cuò)了會(huì)留下漏洞。推薦順序是刪除不可見(jiàn)字符和控制字符。NFKC 折疊全角與兼容字符。統(tǒng)一轉(zhuǎn)小寫(xiě)。壓縮重復(fù)字符。壓縮連續(xù)空白并去掉首尾空格。為什么“刪不可見(jiàn)字符”要放在最前面因?yàn)檫@些字符可能夾在 Unicode 組合序列中間先折疊再做刪除有可能產(chǎn)生新的組合結(jié)果導(dǎo)致漏刪。為什么不轉(zhuǎn)小寫(xiě)就壓縮重復(fù)大小寫(xiě)混寫(xiě)如vv折疊前后是兩種形態(tài)先轉(zhuǎn)小寫(xiě)能保證壓縮邏輯看到的是同一個(gè)字符。另外提醒一點(diǎn)本文的規(guī)則庫(kù)是針對(duì)中文話術(shù)設(shè)計(jì)的所以沒(méi)有做繁簡(jiǎn)轉(zhuǎn)換。如果你的業(yè)務(wù)場(chǎng)景里繁體內(nèi)容占比不低建議在 NFKC 之后、轉(zhuǎn)小寫(xiě)之前插入一步繁簡(jiǎn)統(tǒng)一用開(kāi)源的字表映射即可不要自己手寫(xiě)幾百對(duì)字符。這一步加不加取決于你的實(shí)際數(shù)據(jù)分布不要為了“完整”而堆功能。4. 規(guī)則設(shè)計(jì)與打分模型4.1 用組合詞而不是單詞這是規(guī)則庫(kù)設(shè)計(jì)里最容易踩的坑。假設(shè)你把“工廠”設(shè)為關(guān)鍵詞后果是什么用戶問(wèn)“這個(gè)工廠的生產(chǎn)資質(zhì)能看下嗎”直接被判成營(yíng)銷。誤傷幾次之后業(yè)務(wù)方就會(huì)要求關(guān)掉整個(gè)功能。正確的做法是把詞拆成“意圖信號(hào)”每個(gè)信號(hào)用詞組或短語(yǔ)表達(dá)身份宣稱類源頭工廠、源頭廠家、一手貨源、廠家直銷、工廠直供、原廠直供。注意這里全都是兩到四個(gè)字的組合單獨(dú)一個(gè)“工廠”或“貨源”不構(gòu)成信號(hào)。引導(dǎo)聯(lián)系類加V、加微信、留聯(lián)系方式、私信我、私聊我、滴滴我、扣1。這類信號(hào)的危險(xiǎn)度最高因?yàn)樗哪康木褪前讶藦钠脚_(tái)導(dǎo)走。招呼攬客類有需要就找我、歡迎咨詢、歡迎來(lái)撩、隨時(shí)找我。這是最典型的“哈嘍體”尾巴。價(jià)格誘惑類批發(fā)價(jià)、出廠價(jià)、低價(jià)清倉(cāng)、一件代發(fā)、量大從優(yōu)。緊迫感類限時(shí)、秒殺、手慢無(wú)、僅限今天、最后 N 件。批量起訂類N 件起批、起訂量、大量現(xiàn)貨。這樣拆分以后單條文本的召回和精準(zhǔn)度都會(huì)好很多。同時(shí)規(guī)則具備可解釋性命中了哪一類審核人員一眼就能看懂原因。4.2 權(quán)重怎么定有了信號(hào)之后要給權(quán)重。權(quán)重的意義不是“精確概率”而是相對(duì)危險(xiǎn)度的排序。本文的取值思路是規(guī)則權(quán)重理由引導(dǎo)聯(lián)系25直接觸達(dá)用戶風(fēng)險(xiǎn)最高招呼攬客18典型攬客尾巴但可能出現(xiàn)在客服場(chǎng)景身份宣稱15單獨(dú)出現(xiàn)不足以判定需組合價(jià)格誘惑12常見(jiàn)于正常促銷緊迫感10廣告常用但正?;顒?dòng)也用批量起訂8補(bǔ)充信號(hào)幾個(gè)設(shè)計(jì)要點(diǎn)值得說(shuō)明。第一同一條規(guī)則在一條文本里只計(jì)一次分。有人會(huì)想“命中三次就乘三”這會(huì)讓刷分變得極其容易——重復(fù)五遍“加V”就能把分?jǐn)?shù)頂?shù)缴舷?。用re.search而不是re.finditer天然做到一條規(guī)則一次計(jì)分。第二分?jǐn)?shù)要有上限。所有命中權(quán)重求和后做一次min(raw, 100)避免后續(xù)加規(guī)則時(shí)分?jǐn)?shù)計(jì)算溢出預(yù)期區(qū)間也方便閾值調(diào)整。第三權(quán)重是調(diào)出來(lái)的不是想出來(lái)的。上線后一定要跑真實(shí)的復(fù)核樣本把誤判的樣本和漏判的樣本分別列出來(lái)看是該調(diào)權(quán)重還是該補(bǔ)規(guī)則。憑感覺(jué)調(diào)權(quán)重兩周之后沒(méi)人記得為什么是 15 而不是 12。4.3 閾值分級(jí)與人工復(fù)核三檔閾值的取值建議score 45→block直接攔截或折疊展示。20 score 45→review進(jìn)入人工復(fù)核隊(duì)列。score 20→pass正常放行。為什么中間要留這么寬的一檔因?yàn)闋I(yíng)銷文本的判定本質(zhì)上是概率性的兩檔攔/放會(huì)逼著你在“誤傷太多”和“漏放太多”之間二選一。有了 review 檔你可以先用較寬的規(guī)則召回再通過(guò)人工復(fù)核把樣本標(biāo)出來(lái)逐步把規(guī)則收緊。這也是冷啟動(dòng)階段最務(wù)實(shí)的策略。需要提醒的是閾值不能幾個(gè)業(yè)務(wù)線共用一套??头?huì)話里的“歡迎咨詢”是正常的商品評(píng)論區(qū)里的“歡迎咨詢”就很可疑。合理的做法是給不同場(chǎng)景各配一套閾值或者給規(guī)則加上場(chǎng)景標(biāo)簽。5. 完整實(shí)戰(zhàn)一個(gè)可運(yùn)行的文本風(fēng)控小工具下面把四個(gè)模塊的代碼完整寫(xiě)出來(lái)每段都能直接復(fù)制進(jìn)對(duì)應(yīng)文件運(yùn)行。5.1 歸一化模塊文件路徑text_guard/normalize.py文本歸一化把各種變體寫(xiě)法統(tǒng)一成可比較的形態(tài)。 import re import unicodedata # 零寬字符、方向控制符、軟連字符等不可見(jiàn)字符 _INVISIBLE_RE re.compile(r[\u200b-\u200f\u202a-\u202e\u2060\ufeff\u00ad]) # ASCII 控制字符\t、\n、\r 交給后面的空白壓縮處理 _CTRL_RE re.compile(r[\x00-\x08\x0b\x0c\x0e-\x1f\x7f]) # 三個(gè)及以上連續(xù)相同的「非數(shù)字、非空白」字符壓縮成一個(gè) _REPEAT_RE re.compile(r([^\d\s])\1{2,}) # 連續(xù)空白壓縮成一個(gè)空格 _SPACE_RE re.compile(r\s) def strip_invisible(text: str) - str: 刪除零寬字符和控制字符避免「看起來(lái)一樣、實(shí)際不同」的文本繞過(guò)規(guī)則。 return _INVISIBLE_RE.sub(, _CTRL_RE.sub(, text)) def to_halfwidth(text: str) - str: 使用 NFKC 歸一化把全角字母數(shù)字、兼容字符折疊成常見(jiàn)形態(tài)。 return unicodedata.normalize(NFKC, text) def collapse_repeats(text: str) - str: 壓縮夸張重復(fù)有需要要要找我 - 有需要找我。數(shù)字不壓縮避免破壞價(jià)格和型號(hào)。 return _REPEAT_RE.sub(r\1, text) def normalize(text: str) - str: 歸一化主入口順序不可隨意調(diào)換。 if not text: return t strip_invisible(text) t to_halfwidth(t) t t.lower() t collapse_repeats(t) t _SPACE_RE.sub( , t).strip() return t逐段解釋一下。strip_invisible做了兩層sub嵌套外層刪零寬字符內(nèi)層刪控制字符順序無(wú)關(guān)因?yàn)閮深悈^(qū)間不重疊。to_halfwidth里用 NFKC 而不做手工映射是因?yàn)槿亲帜赣?26 個(gè)、全角數(shù)字 10 個(gè)、各種標(biāo)點(diǎn)幾十個(gè)手寫(xiě)映射表既容易漏又難維護(hù)標(biāo)準(zhǔn)庫(kù)已經(jīng)把這件事件做好了。collapse_repeats的替換串是r\1配合正則里的捕獲組([^\d\s])把整段重復(fù)壓縮成第一個(gè)字符。數(shù)字被顯式排除是為了保住“最后100件”這類信息。最后normalize函數(shù)的順序就是 3.3 節(jié)說(shuō)的順序注釋里也標(biāo)明了不可隨意調(diào)換。5.2 規(guī)則定義模塊文件路徑text_guard/rules.py規(guī)則數(shù)據(jù)定義。這里只放數(shù)據(jù)不放邏輯。 from dataclasses import dataclass from typing import List dataclass(frozenTrue) class Rule: rule_id: str # 規(guī)則唯一標(biāo)識(shí)用于日志和解釋 pattern: str # 正則在「已歸一化文本」上匹配 weight: int # 命中分值 desc: str # 人話描述給審核人員看 DEFAULT_RULES: List[Rule] [ Rule( rule_idsrc_factory_claim, patternr源頭工廠|源頭廠家|一手貨源|廠家直銷|工廠直供|原廠直供, weight15, desc自稱源頭/廠家直供, ), Rule( rule_idcontact_solicit, patternr加\s*[v威薇微w]|加個(gè)?微信|留個(gè)?聯(lián)系方式|私信我|私聊我|滴滴我|扣\s*1, weight25, desc引導(dǎo)私下聯(lián)系, ), Rule( rule_idsales_greeting, patternr有需要就?找我|需要的?話?[^,。?]{0,6}找我|歡迎咨詢|歡迎來(lái)撩|隨時(shí)找我, weight18, desc招呼式攬客, ), Rule( rule_idprice_claim, patternr批發(fā)價(jià)|出廠價(jià)|低價(jià)清倉(cāng)|跳樓價(jià)|賺差價(jià)|一件代發(fā)|量大從優(yōu), weight12, desc低價(jià)/代發(fā)話術(shù), ), Rule( rule_idurgency, patternr限時(shí)|秒殺|手慢無(wú)|僅限今天|最后\s*\d\s*件, weight10, desc制造緊迫感, ), Rule( rule_idwholesale_qty, patternr\d\s*件起批|起訂量|大量現(xiàn)貨, weight8, desc批量起訂話術(shù), ), ]幾個(gè)正則細(xì)節(jié)需要單獨(dú)說(shuō)明。加\s*[v威薇微w]里的\s*是為了兼容“加 V”這種中間帶空格的寫(xiě)法。歸一化已經(jīng)把連續(xù)空白壓成一個(gè)空格但空格還在所以匹配時(shí)必須允許它。需要的?話?[^,。?]{0,6}找我是“需要的資料可以找我”這類長(zhǎng)句的兜底。中間允許 0 到 6 個(gè)非標(biāo)點(diǎn)字符超過(guò) 6 個(gè)字符通常說(shuō)明這是兩個(gè)獨(dú)立語(yǔ)義誤傷風(fēng)險(xiǎn)上升。這里的[^,。?]用的是半角標(biāo)點(diǎn)因?yàn)闅w一化已經(jīng)通過(guò) NFKC 把中文逗號(hào)句號(hào)問(wèn)號(hào)轉(zhuǎn)成了半角。最后\s*\d\s*件允許數(shù)字兩邊有空格同樣是為了兼容“最后 100 件”這類排版。注意這里和collapse_repeats不沖突因?yàn)閿?shù)字沒(méi)有被壓縮。5.3 規(guī)則引擎模塊文件路徑text_guard/engine.py規(guī)則引擎負(fù)責(zé)匹配、打分、給出結(jié)論。 import re from dataclasses import dataclass, field from typing import List, Sequence from .normalize import normalize from .rules import Rule, DEFAULT_RULES VERDICT_BLOCK block VERDICT_REVIEW review VERDICT_PASS pass dataclass class Hit: rule_id: str desc: str weight: int matched: str dataclass class Decision: text: str normalized: str score: int verdict: str hits: List[Hit] field(default_factorylist) def to_dict(self) - dict: return { verdict: self.verdict, score: self.score, normalized: self.normalized, hits: [ { rule_id: h.rule_id, desc: h.desc, weight: h.weight, matched: h.matched, } for h in self.hits ], } class RuleEngine: def __init__( self, rules: Sequence[Rule] DEFAULT_RULES, block_threshold: int 45, review_threshold: int 20, ): if review_threshold block_threshold: raise ValueError(review_threshold 必須小于 block_threshold) # 規(guī)則在初始化階段一次性編譯運(yùn)行期不再重復(fù)編譯 self._rules [(rule, re.compile(rule.pattern)) for rule in rules] self.block_threshold block_threshold self.review_threshold review_threshold def decide(self, text: str) - Decision: normalized normalize(text) hits: List[Hit] [] for rule, pattern in self._rules: # 用 search 而不是 finditer同一條規(guī)則只計(jì)一次分 m pattern.search(normalized) if m: hits.append( Hit( rule_idrule.rule_id, descrule.desc, weightrule.weight, matchedm.group(0), ) ) score min(sum(h.weight for h in hits), 100) if score self.block_threshold: verdict VERDICT_BLOCK elif score self.review_threshold: verdict VERDICT_REVIEW else: verdict VERDICT_PASS return Decision( texttext, normalizednormalized, scorescore, verdictverdict, hitshits, )這段代碼里有三處設(shè)計(jì)是刻意的值得單獨(dú)講。構(gòu)造期編譯正則。re.compile本身有緩存但顯式編譯能保證行為確定也避免運(yùn)行期第一次調(diào)用時(shí)的抖動(dòng)。規(guī)則庫(kù)一旦大起來(lái)幾百條每次請(qǐng)求重復(fù)編譯的開(kāi)銷不可忽視尤其是高頻短文本場(chǎng)景。用search而不是finditer。這是 4.2 節(jié)說(shuō)的“一條規(guī)則只計(jì)一次分”的實(shí)現(xiàn)基礎(chǔ)。如果改成finditer并累加惡意用戶只要把話術(shù)重復(fù)幾遍就能把分?jǐn)?shù)打滿整個(gè)閾值體系就失效了。分?jǐn)?shù)封頂 100。這個(gè)細(xì)節(jié)在多規(guī)則疊加時(shí)很重要。如果不封頂將來(lái)加規(guī)則容易把分?jǐn)?shù)推到幾百閾值就需要跟著重算歷史積累的調(diào)參經(jīng)驗(yàn)全部作廢。封頂之后閾值區(qū)間保持穩(wěn)定。5.4 命令行入口文件路徑text_guard/cli.py命令行入口支持單條、文件和標(biāo)準(zhǔn)輸入三種方式。 import argparse import json import sys from .engine import RuleEngine def build_parser() - argparse.ArgumentParser: parser argparse.ArgumentParser( progtext-guard, description營(yíng)銷引流話術(shù)檢測(cè)小工具, ) source parser.add_mutually_exclusive_group() source.add_argument(-t, --text, help檢測(cè)單條文本) source.add_argument(-f, --file, help檢測(cè)文本文件每行一條) parser.add_argument(--block, typeint, default45, help攔截閾值默認(rèn) 45) parser.add_argument(--review, typeint, default20, help復(fù)核閾值默認(rèn) 20) parser.add_argument(--json, actionstore_true, help以 JSON 行格式輸出) return parser def main(argvNone) - int: args build_parser().parse_args(argv) engine RuleEngine(block_thresholdargs.block, review_thresholdargs.review) if args.text is not None: items [args.text] elif args.file: with open(args.file, encodingutf-8) as f: items [line.rstrip(\n) for line in f if line.strip()] else: items [line.rstrip(\n) for line in sys.stdin if line.strip()] for idx, item in enumerate(items, start1): decision engine.decide(item) if args.json: payload decision.to_dict() payload[line] idx print(json.dumps(payload, ensure_asciiFalse)) else: print(f[{idx}] {decision.verdict.upper():6} score{decision.score:3} {item}) for hit in decision.hits: print(f - {hit.rule_id}({hit.weight}): {hit.matched}) return 0 if __name__ __main__: raise SystemExit(main())ensure_asciiFalse這一行很關(guān)鍵。默認(rèn)的json.dumps會(huì)把中文轉(zhuǎn)成\uXXXX日志里幾乎沒(méi)法看排查問(wèn)題時(shí)非常痛苦。加上這個(gè)參數(shù)后輸出保持中文原樣配合encodingutf-8讀文件整條鏈路不會(huì)出現(xiàn)亂碼。raise SystemExit(main())是標(biāo)準(zhǔn)寫(xiě)法保證入口函數(shù)的返回值能正確傳遞給操作系統(tǒng)便于在腳本里通過(guò)退出碼判斷成功與否。5.5 單元測(cè)試文件路徑tests/test_engine.pyimport unittest from text_guard.engine import ( RuleEngine, VERDICT_BLOCK, VERDICT_PASS, VERDICT_REVIEW, ) from text_guard.normalize import normalize class NormalizeTest(unittest.TestCase): def test_fullwidth_to_halfwidth(self): self.assertEqual(normalize(加), 加v) def test_zero_width_removed(self): self.assertEqual(normalize(加\u200bv), 加v) def test_repeat_collapsed(self): self.assertEqual(normalize(有需要要要找我), 有需要找我) def test_digits_kept(self): self.assertEqual(normalize(最后100件), 最后100件) class EngineTest(unittest.TestCase): def setUp(self): self.engine RuleEngine() def test_marketing_greeting_is_review(self): d self.engine.decide(哈嘍我們是源頭工廠有需要就找我呀) self.assertEqual(d.verdict, VERDICT_REVIEW) self.assertEqual(d.score, 33) def test_hard_sell_is_block(self): d self.engine.decide(源頭工廠一手貨源加Vabc123一件代發(fā)量大從優(yōu)) self.assertEqual(d.verdict, VERDICT_BLOCK) self.assertEqual(d.score, 52) def test_normal_question_passes(self): d self.engine.decide(這個(gè)零件是源頭工廠生產(chǎn)的嗎我想了解下工藝流程) self.assertEqual(d.verdict, VERDICT_PASS) def test_contact_only_is_review(self): d self.engine.decide(有貨的話加個(gè)微信聊) self.assertEqual(d.verdict, VERDICT_REVIEW) if __name__ __main__: unittest.main()測(cè)試用例的設(shè)計(jì)思路是“一類風(fēng)險(xiǎn)一條”。歸一化層測(cè)四個(gè)點(diǎn)全角折疊、零寬刪除、重復(fù)壓縮、數(shù)字保留。引擎層測(cè)四個(gè)點(diǎn)打招呼式攬客、硬廣、正常提問(wèn)、僅引導(dǎo)聯(lián)系。這樣改規(guī)則時(shí)有基線保護(hù)不會(huì)出現(xiàn)“修了漏判、炸了誤傷”還不知道的情況。如果你的團(tuán)隊(duì)用 pytest這套用例可以直接跑不需要改任何斷言寫(xiě)法因?yàn)閡nittest.TestCase的子類 pytest 也識(shí)別。5.6 運(yùn)行驗(yàn)證與結(jié)果解讀準(zhǔn)備樣本文件文件路徑samples.txt哈嘍我們是源頭工廠有需要就找我呀 源頭工廠一手貨源加Vabc123一件代發(fā)量大從優(yōu) 這個(gè)零件是源頭工廠生產(chǎn)的嗎我想了解下工藝流程 你好請(qǐng)問(wèn)這個(gè)型號(hào)還有貨嗎 限時(shí)秒殺最后3件手慢無(wú)需要的私聊我執(zhí)行python -m text_guard.cli -f samples.txt預(yù)期輸出[1] REVIEW score33 哈嘍我們是源頭工廠有需要就找我呀 - src_factory_claim(15): 源頭工廠 - sales_greeting(18): 有需要就找我 [2] BLOCK score52 源頭工廠一手貨源加Vabc123一件代發(fā)量大從優(yōu) - src_factory_claim(15): 源頭工廠 - contact_solicit(25): 加v - price_claim(12): 一件代發(fā) [3] PASS score15 這個(gè)零件是源頭工廠生產(chǎn)的嗎我想了解下工藝流程 - src_factory_claim(15): 源頭工廠 [4] PASS score0 你好請(qǐng)問(wèn)這個(gè)型號(hào)還有貨嗎 [5] REVIEW score35 限時(shí)秒殺最后3件手慢無(wú)需要的私聊我 - contact_solicit(25): 私聊我 - urgency(10): 限時(shí)逐條解讀一下結(jié)果這幾條正好覆蓋了系統(tǒng)的主要行為。第 1 條就是標(biāo)題里那句話得分 33落在 review 檔。它命中了“源頭工廠”這個(gè)身份宣稱和“有需要就找我”這個(gè)攬客尾巴但沒(méi)有引導(dǎo)聯(lián)系、沒(méi)有價(jià)格誘惑所以不直接攔截。這個(gè)判定是合理的——如果你看到一條評(píng)論是這么寫(xiě)的通常會(huì)選擇折疊或者限流而不是直接刪除賬號(hào)。第 2 條得分 52直接 block。注意它的命中項(xiàng)里contact_solicit匹配到的是歸一化之后的加v說(shuō)明全角字母折疊生效了。三條規(guī)則疊加剛好越過(guò)攔截線這正是“組合信號(hào)”的價(jià)值——單獨(dú)任何一條都不足以定罪。第 3 條只命中身份宣稱得 15 分判 pass。這條最值得注意它證明了兩件事一是組合詞設(shè)計(jì)確實(shí)降低了誤傷如果規(guī)則里放的是單個(gè)“工廠”這條會(huì)被判 review二是 review 閾值設(shè)在 20 是有依據(jù)的單信號(hào)不應(yīng)該進(jìn)復(fù)核隊(duì)列否則復(fù)核隊(duì)列會(huì)被大量正常提問(wèn)淹沒(méi)。第 4 條零命中正常放行。第 5 條命中了引導(dǎo)聯(lián)系和緊迫感得 35 分進(jìn) review。這里其實(shí)可以討論私聊我權(quán)重 25 是否過(guò)高如果這條來(lái)自客服場(chǎng)景可能是正?;貜?fù)。這就是為什么 4
返回列表
PREV
查看更多資訊
NEXT
返回資訊列表
亚洲色 国产 欧美 日韩| 四季av一区二区凹凸精品小说| 亚洲无无码αⅴ每日更新| 久久久久久少妇| 殴美牲| 午夜AV人气不卡| 色与欲影视| 91蜜臀人妻中文字幕在线| 曰本91情色| 天天操女人| 另类在线| 大奶啊啊好爽 | 99久久婷婷丁香| 久久久久久久人妻| 欧美性爱日韩性爱| 黄色性爱网网| www.av在线视频| 色综合加勒比| 欧美色宗合| 欧姜老司机| 欧美 亚洲| 人妻精品一区二区三区| 啊啊啊久久| 日韩欧视频| 亚春色色| 一区二区三区高清| 亚洲丝袜在线观看| 97亚洲中文| 日韩精品午夜操呦呦不卡影院| 国产和美国毛片| 久久草视频污视频| 欧洲精品久久| 欧美九一精品久久久熟妇| 亚洲欧美setu| 久草老司机| 91插B网站| 色悠久久久av| 大香蕉懂9| 天堂性色| AⅤ片水多多| 欧美成人一级麻豆| 69少妇一区二区| 国产真乱mangent| 最新日本中文字幕| 亚洲色图欧美色图日韩色图| 日韩亚洲中文字幕在线| 亚洲欧美中文日韩视频中国语| 蜜乳AV一区二区三区四| 黄片在线免费在线观看| 天天色悠悠激情| 北京专精特新企业招聘信息| 色老汉色| 色爱天堂| 欧美色综合| A级在线视频| 综合影院永久入口国产| av在线一区二区三区| 综合网色| 日韩人妻丝袜美腿中文| 精品日日人妻| 亚洲女优有码无码高清| 五月婷婷色| 妇女性内射冈站HDWWWCOM| 97欧美色| 丝袜狠狠草尤物 91| 黄污污污污| 亚洲图片婷婷五月天| 国语精品对白| 中国小夫妻勾搭露脸淫荡对白 | av影片在线观看不卡| 福利一级版子| 九月丁香婷婷| 99久久综合| 两女互慰AV高潮喷水在线观看| 97超碰影音| 天天看片麻豆| 啊啊啊啊啊啊啊好爽不要| 欧洲一级性爱视频在线观看| 美女黄网| 超碰97伊人| 中文字幕人妻色偷偷久久皮 | 欧美日韩国产色图在线| av网站在线观看了| 国产精品白领在线观看| 91无遮挡| 午夜在线播放| 天天日天天干天天摸天天操| 蜜臀va69| 久久97超碰| 精品人妻视频一区二区在线播放| 午夜啊啊啊| 嗯嗯嗯好爽| 亚洲宗合电影| 男女香蕉一区二区| 久久性生大片免费观看性| 久久肏大逼| 欧美日韩国产中文精品字幕自在自线,| 日小BB小视频| 老熟女91| 三级日本一区二区三区| 人人搞人人插人人操| 久久久久夜夜夜夜| 中文字幕丰满子伦无码专区在线视频最新 | 一区二区娱乐网站| 凹凸视频特色日本特黄| 欧美顶级黄片AAAAA在线免费看| 人人操人人干网页| 国产精品欧美日韩久久| 91天堂色男人的天堂| 久久激情亚洲精品无码?V| 久久av一级av少妇av高潮| 青娱乐淫乱1314| 女人精品内射国产99| 97色香蕉| 97在线视频免费| 中日韩熟女| 另类小说五月天| 丰满人妻一区二区三区在线| 日韩乱码Av| 黑人中出21连凳花野真衣| 超碰碰97| 超碰在线成人电影| 九九九九九九视频免费| 亚洲 欧美 日韩 国产一区二区 | 揉揉揉夜夜| 黄页av| 久久精品国产精品一区| 综合久久久久久久综合网| 欧美日韩操逼动图| 屌逼麻豆| 日本熟妇色熟妇在线视频播放| 亚洲男人的天堂网| 青草精品视频日本久久久久网站在线| 亚洲一区日韩精品中文字幕| 国产精品一级片在线看| 看一级黄色视频| 资源在线观一 二| 九九九999久久久网站| 东京日日夜夜| 亚洲国产精品乱码在线观看| 欧美天堂超碰97| 国产精品农村妇女| 99久久婷婷丁香| 九九性爱网| 中文字幕五区| 麻豆国产成人精品| 久久久久国色αv免费观看| 高清孕妇孕交 交| 狠狠久久手机视频精品| 亚洲天堂男人在线| 大屁股熟女一区二区三区| 蜜臀99久| 国产精品久久久久中文字幕| 成 人 影视 一区 二区 三区 四区 | av三级电影在线播放| 97视频网站在线观看| 欧美精品久久久久久久丰满| 肉丝无码中文高清| 国产乱弄免费在线视频。| 白丝少妇一区二区| 亚洲色宗合| 亚洲最新av无码成人精品区| 91网站18在线| 视频一区二区免费在线| 女人爽到高潮潮喷18禁网站| 国产情色第一第二页在线观看| 秘书高跟黑色丝袜国产91在线| 夜夜草我| 欧美激情视频一区二区三区不卡| 日韩欧美蜜桃精品久久中文字幕久久| 自拍偷拍草一草| 五月丁香啪啪网| 使劲用力艹少妇视频一区二区| 91宗合网| 午夜情侣自拍网站| 久久超碰97| 丰满人妻av一区二区三区| 国产丰满少妇久久久精品影院| 欧洲视频在线| 日韩钢筋无码高清啾啾啾| 黄片色区软件| 超碰免费人妻人人| 丁香五月天激情综合| 亚洲天堂日本| 久热精品色情| 亚洲玖玖爱| 国产av强奸美女| 97资源制服丝袜| 热G综合热G中文| 97精品熟女少妇一区| 97超碰无码网| 一级AV性爱| 日日干日日| 俺去啦自拍| 日韩欧美tv一区二区在线观看| 中文字幕制服欧美久久一区| 国产毛片片精品天天看视频| 亚洲图片 91| 亚洲熟女综合一区二区| 欧美日韩99精品麻豆传媒| 日本大香蕉综合网| 一二三区在线| 欧美亚洲首页| 亚洲一区日韩精品| 深爱伊人影院| 久久伊人大香蕉| 67914在线兔费成人视频| 亚洲日韩国产欧美综合v| 韩日精品福利视频一区不卡在线免| 久热色情精品| 99无码狠狠久久| 黑丝91视频| 中文字幕精品免费一区二区| 北京美女一区二区| 国产97视频免费观看| 日韩中文9| 成人福利视频网| 亚州性色| 熟妇熟女一区二三区| 国产AAAAAABBBBB| 亚洲天堂情色| 人妻精品视频一区二区| 精品国产乱子伦一区二区三区,精品一| 丁香久久| 国产精品午夜福利亚洲综合网| 色色色色色色色色综合| 中文字幕亚洲在线一区| 亚洲精品一区二区三区在线播放| 日韩黄片影院| 日本一本道A级黄色毛片试看60分钟| 自慰白浆在线观看| 92福利社视频| 欧美性,色九九| 国产乱人妻精品入口| 成人av福利在线观看| 天天操天天干一区二区 | 国产高清MV操逼视频| 亚欧无码在线| 囯产精品一区二区三区线|亚洲人成无码网WWW动漫|国产精品免费一级... | 97在线免费视频观看| 麻豆天美91| 亚洲一区操| 国产福利小视频高清在线观看| 日韩欧美俄罗斯A片| 99热精品在线| 97一本大道亚洲一区| 亚洲狠狠入| 一区二区三区美女超清| 成人三级片无码| 中文字幕av色| 天天操熟妇| 精品综合久久久久久五月天| 无码在线亚洲| 伊人久久大香线蕉亚洲五月天,青草青草欧美日本一区二区,欧美日产欧美日产国产 | 欧美精品一区二区少妇免费A片| 亚洲日韩美女中文字幕乱| www.色婷婷.com| 最新精品久久蜜桃| 亚洲 暴爽 AV人人爽日日碰| 午夜福利视频在线一区| 91在线限制级| 91综合网在线| 亚洲欧洲国产综合av| 久久熟妇五十路一区| 久久大香蕉97| 亚洲AV性爱电影| 欧美三级一级| 天天伊人| 97操碰| 美女网站黄页| 2019久久久久久久久福利| 超碰亚洲欧美日韩无| 亚洲AV在线资源| 在线视频 亚洲精品| 99精品网| 欧美色综合网| 精品夜夜澡人妻无码| 91蜜桃传媒精品久久久一区二区| 亚洲精品性爱片| 91大胆欧美| 96超碰网| 亚洲无码99| 91蜜桃传媒精品久久久一区二区| 色色色色电影网| 亚洲综合69| 100啪啪视频大全| 国产乱码久久| 天天噜| 95人妻爽爽人人做人人澡| 久久女女| 色九九九九久| 91九九| 好吊妞转入那个网| 91啪啪| 啊啊啊操一区| 神马福利久草| 亚州熟女乱伦| 欧洲亚洲人妻无码中字久久三区四区| 最新无码国产| 久久视频少妇美女| 操逼操逼视频操逼| 自拍啪啪视频| 久久久爆乳翘臀一线天伦理视频| 99在线精品视频| 日本免费中文一区二区三区四区| 亚洲情欲| 国产精品。| 亚欧性爱无码| 精品国产综合久久福利,热99这里有精品综合久久,99热这里只有免费国产精品,精 | 蜜桃传媒视频第一区入口在线看| 天天看,天天做| 超碰色美女| 天天天天操| 丰满人妻一区二区三区色-百度| 伊人影院中文字幕| 在线观看无码三级少妇| 欧美在线|亚洲| 最新国产亚洲精品精品国产亚洲综合| 快灬快灬 一下爽蜜桃在线观看| 首页亚洲国产高跟丝袜诱惑视频| 国产强奸无码乱伦| 精品无码久久久久| 亚洲国产一区二区三区四区国产| 男人天堂欧美| 91爱看| 欧美丰满熟妇XXXX性ppX人交| 97在线免费看视频| 成人A片男人的天堂| 97网址97| 亚洲欧美精品一区天堂久久 | 超碰97极品9| 日韩欧美视频青青| 日韩色| 97K超碰在线| GVH-003 母子姦 青木玲-麻豆视频,麻豆视传媒短视频网站入口,麻豆视传媒官网直 | 欧美亚洲美少妇一区二区| 久草网站免费在线观看| 久久国产乱子伦精品免费女,网站| 日本伦理一区二区| 日韩性爱高清免费视频| 超碰97人妻免费在线| 九九九热精品| 9 7超碰在线免费观看| 国产一级黄色片在线观看 | 美日韩一卡二卡三卡免费人妻精品| 国产理论视频在线播放| 美女裸体无遮挡永久免费观看网站| 蜜乳av一区二区三区| 六六久久日韩不卡| 碰碰在线视频| 国内精品伊人久久久久影院会| 在线播放成人高清免费视频| 老熟乱一区二区三区四区| 玖玖综合色| 美女刺激久久国产欧美| 搡老熟女老女人老熟妇免费视频| 操逼免费视频无码国产| 天天躁日日躁狠狠躁| 无码九九九九| 欧洲自拍色图gif在线| 亚洲有薄码区日本系列中文字幕| 亚洲偷拍自拍在线视频| 不卡av在线中文字幕| 国产无码成人无码| 日韩情色一区二区| 奶水 人妻 哺乳 在线| 国产日韩中文字幕欧美| 亚洲精品美女操逼| 国偷自 一区二区| 亚洲淫乱骚妇AV| 久久色一区| 91蜜臀在线久久久久| 九九热超碰| 久久美女福利是上海美女| 91c色| 大香蕉一区二区在线观看.| 欧亚无码视频| 日B操| 伊人网青青| 欧美人与动性人交a| 天天伊人| 欧美黄页| 在线有码中文字幕| 国产精品网址| 中文字幕亚洲永久精品| 八人操人人摸人人看| 国产啊v在线免费播放| 夜夜操青青草| 国产熟女乱论| 九九久久精品| 久久婷婷国产一区二区色| 2020中文字幕| 国产91精品久久久久久久网曝门| 神马久久中文字幕| 久久9999 | 伊人久久综合影院精品久久久| 国产精品成人AV片免费看网站| 在线日韩日本亚洲国产| 亚洲国产欧美一区二区潘金莲| 天天懆天天日| 日本操BAV| 91蜜桃婷婷狠狠久久综合9色| 丁香五月AV| 九九十八精品| 九九九九九九九| 欧美高清91| 91狠狠综合网| 日韩综合无码色欲vv| 中文字幕中文字幕一区二区| 九九色精品| 久久发布国产伦子伦精品| 啊啊啊啊啊好大好舒服想要| 91国产丝袜美女| 精品国产乱码久久久| 人妻夜夜爽天天爽三区麻豆AV网站| 国产粉嫩蜜臀av一区二区三区| 国产熟女完整版中字| 人人色人人操在线| juliaann精品熟女一区| 精品丰满熟妇人妻一区| 国产91影院| 亚洲第2页| 亚洲午夜免费狠狠干| 抽插爽| 超碰色97| 性爱乱伦网址| 狠色婷婷久久一区二区三区_| 毛片99-全集电影手机免费观看完整-B029AV| 大香久久| 国产亚洲日本精品在线| 久久久久久久久久久97| 久久久久久人体| 人妻干天天| 亚洲无码99| 久久99草| 日本韩国国产精品一区| 九九碰九九爱97超碰| 久久久久久久久久久999| 加勒比中文av| 3p国产欧美99热| 99精品热| 欧美Ⅴ性爱| 久久久夜夜嗨免费视频| 熟女精品一区二区在线观看| 久久精品国产精品一区| 亚洲久热| 日韩电影免费网站麻豆视频| 插穴性爱视频在线观看| 97在线欧洲| 日韩小电影| 综合一区中亚洲国产成人综合精品| 亚洲情色一区三区| 国产91精品在线免费| 亚洲高清在线| 东北女人性交| 五月婷婷丁香| 欧美激情一| 人人摸人人叼| 九一性生活免费视频| 国产精品久久久久久久AV大片| 日韩人妻少妇中文字幕| 深夜福利黄片| 亚洲棕合电彰| 天天操天天射天天日| 欧美大香蕉97| 精品美女久久久久| 97爱b| 国产高清精品一区二区三区毛片 | 97九色| 日韩内射视频| 黄色免费网| 哈哈操电影AV| 亚洲成人性爱网站在线播放| 亚州色国| 激情综合网五月婷婷五月天| KK色在线影院| www.zbzhongsen.com| 日韩三级av片| 婷婷成人久久久精品| 亚洲天堂男人的天堂| 亚洲天堂性爱| 亚洲国产91精品一区二区久久| 秋霞男人网| 牛牛操视频逼| 青青草一本道福利视频| 久久婷婷热| 99热伊人| 欧美狠狠弄| 亚洲精品国产熟女久久久久久| 大香蕉男人的天堂| 97人人干人人操| 伊人九九| 激情五月综合网| 精品人妻一区二区三区不卡断 | 亚洲色图国产另类| 欧美一区二区一级岛国大片| 丝袜色综合| 婷婷色婷婷| 一级毛片电影免费看| 欧美 青青草| 色欲蜜臀AV| 久久久久久999| 中文字幕版| 五月丁香社区婷婷日韩欧美精品影院 | 97在线观看免费视频| 欧美 日韩 国产传媒| 亚洲精品无码久久AV| 校园春色美腿丝袜 | 综合亚洲网| 高清不卡视频| 色牛牛AV| 9国产超碰| 男人天堂最新手机版在线青青草| 欧美大香蕉卡久久| 熟女被操视频网址| 内射小黄片| 亚洲一区二区中文字幕| 91综合国产精品| 99热在线播放| 国产三级多多影院2022国产AA一级毛片无码| 国产超碰欧美| 超碰夫妻97| 这里只有精品视频| 日本在线播放不卡一区| 肏逼福利网站| 久久久涩| 9997se| 久久精品老司| 中文一区二区婷婷视频| 国产精品三级视频网站| 翔田千里Av在线| 国产精品农村妇女| 女人18精品一区二区三区| 春色校园综合网| 另类小说五月天| 亚洲精品一区二区三区在线播放| 亚洲āv网址在线观看| 亚洲一区中文字幕| 欧美性Fer办公室秘书| 无码人妻丰满熟妇奶水区毛片| 99热伊人| 日本3级一区二区免费| 日韩精品在线视频在线观看 | 99热aaa| 91在线美女| 超碰99在线观看| 国产强奸超碰AV| 日韩国产乱子伦App| 国产无马在线| 啪啪性爱免费视频| 欧美国产精品久久九九| 中文字幕乱码在线| 中文字幕制服诱惑| 青青草福利视频| www欧美91| 久久精品区| 91无码人妻精品一区二区三区蜜桃| 日韩精品大香蕉伊人在线| www.AV有限公司一区| 2019AV天堂| 白丝AV网站| 久久精品视频28| 制服少妇欧美| 成人天天爽| 久9爱精品| 中文有码9| 欧美 亚洲精品首页| 99少妇内射| 人妻91少妇| 国产传媒日韩| 日韩欧美操逼xxx| 无遮挡一级毛片视频免费的| 99re公开精品免费视频| AV免费在线播放一区| 亚洲欧美中文日韩视频中国语| 91人妻Pr| 91人人爽人人爽人人人,gav福利视频导航,日韩欧美亚洲国产字幕四区 | 精品国产一区二区三区四区在线看| 99在线免费公开视频| 国产 日韩 欧美 中文 另类,国产 欧美 另类 制服 变态,高清 日韩 欧美 中文,高 | 亚欧精品久久久久久久久久久| 人妻天堂综合网| 美腿色图| 久久久久久久久国产| 91丰满| 欧美色www亚洲国产阿娇要播| 韩国三级一线观看久| 中文字幕交换人妻| 开心五月婷婷| 亚洲综合99999| 亚洲欧美天| 亚洲国产精品无码AV久久| 一区二区三区免费视频入口| 黑人嘿嘿嘿超爽免费视频| 99re在线观看| 精品176精品2| 亚洲男人在线观看天堂| 久久精品人人做人人看| 曰韩av中文字幕专区| 桃色六月天| 女同性恋中文字幕| 日韩免费在线观看不卡| 中文字幕在线日亚州9| 欧美狠狠干| 亚洲精品啪视频| 日韩久久超碰色| 欧美少妇一区二区三区| 无卡一区=区| 欧美成人性爱视频在线播放 | 又大又白奶子| 青青操视频在线| 91在线欧美| 人妻熟女av国产网站| 日韩在线人妻网站| 一区二区视频在看| 看日韩操逼| 亚洲第一色页夜| 91欧美色| 免费观看啪视频| 国产又大又粗又色生活片亚洲国产精品成人久久久综合免费 | 亚洲男人天堂2| 中文AV制服乱伦| 久久免费精彩视频| 偷拍亚洲情色| 人人操人人干网页| 超碰 另类 欧美| 久久久久99999| 亚洲成人性爱在线观看| 激情视频一二三| 国产偷拍网站| 欧美制服网站美腿丝袜| 男女香蕉一区二区| 人人色97| 日韩av影片在线观看| 91丝袜在线观看| 啊啊啊好疼| 91一区二匹| 老熟妇一区二区三区…| 久久鲁夜| 手机在线A片| 久久曰曰| 18禁在线视频| 国产精品久久发布| 亚洲综合九九| 黄页大片在线观看| 无码一区免费在线不卡| 中文字幕91综合| 美女被啪到深处抽搐视频| 欧美成人9797| 极品国产内射| 一区二区视频在线播放| 亚洲高清色综合| 亚欧操逼片在线观看 | 亚洲激情网一二三四区| 国产成人精品日本视频| {男男暴菊gay无套网站| 欧美日韩亚洲天堂| 97网站在线观看| 久久宗合亚洲| 歐美性天天| 97高清啪啪| 97爱免费插| 五月丁香激情综合网| 久久九九国产精品| 色嗨嗨在线| 国产强奸乱伦xd| 久草精品国产99| 91色色网站| 国产女人视频三四五区| 91久久国产精品| 97网站在线观看| 中文字幕精品亚洲熟女| 很狠操| 中文字幕一区二区三四五区日日骚| 欧美精品丝袜久久久中文字幕| 一区二区日韩欧美久久| 正在播放:深夜激情大战,自带黑丝袜全力输出骚穴 | 一级特黄aaa大片在线观看成人一级片在线观看| 欧美色网| 日韩熟女精品无码专区一区二区 | 日本人人操人人操| 欧美系列在线一区二区| 性爱精品一区| 蜜乳av首页| 五月婷在线| 亚洲人人操| 吻戏激情性巴克| 91九久| 中文字日本乱码| 无码视频一区二区| 日本中文字幕一区| 97在线亚洲| 嗯嗯啊啊啊好爽| 久操97| 伊人一级免费黄片| 很黄很色的视频在线观看| av网页一区二区三区| 国产精品自在自拍视频| 欧美十八禁在线看| 女人爽到高潮久久久| 超碰公开久久网| 国产乱弄免费在线视频。| 欧美亚洲成人在线一区二区三区| 搡老女人老91妇女熟女| 日韩综合97p| 襙一襙| 天天综合网入口~91| 精品人妻一区二区视频| 免费操逼91| 欧美色97| 蜜桃精品一区二区三区久在线| 精品久久99| 人人操AV| 色婷婷综合网站| 无码高清操逼| 夜夜欢天天干| 久久久青青草| 人妖欧美一区二区| 美女91av| 久久亚码| 亚洲第91页| 欧美性,亚州色| 青草青青久久久久久国产| 国产AV久久久蜜爱影集| 3PAV乱伦视频| 久久直播国产| 夜夜操2028| 啊啊啊要高潮了| 天天综合欧美| 婷婷激情五月天小说网| 天天综合在线4| 久久久久久裸体| 黄色免费网| 看一级黄色视频| 1204av韩国| 91爱| 日本福利二区视频| 啊啊啊不要啊啊受不了了视频在线 | 超碰综合色| 天美传媒婬乱在| 日韩视频啪啪| 日韩一区二区熟女| 国产操逼逼网| 91视频精品| 国产无吗在线播放| 亚洲欧洲日本精品中文a∨| 国产在线综合网| 亚洲成人黄色在线观看| 欧美日韩啪啪电影| 玖日综合网| 香蕉视频欧美一卡二卡| 1769精品一区二区三区| 欧美亚洲成人在线一区二区三区| 午夜操一操| 五月激情啪啪| 97精品一区| 人人操人人干网页| 一区 欧美 日韩 麻豆| 97超碰欧美精品| 综合一区中亚洲国产成人综合精品 | 国产亚洲精品玖玖玖在线观看| 亚洲精品天天影视综合网| 一区二区三区看视频| 国产午夜激片Av毛片不卡| 一区二区三区日韩欧美| 三久久久四久久久久| 免费看日产一区二区三区| 人妻熟女一区二区| 久久东京伊人一本到鬼色| 伊人色综合超碰| 淫荡网址| 欧美专区第一页| 超碰三级秋霞| 久久久久久十| 日日操天天操| 国产精品久久久久9999小说| JULIA一区二区三区在线播放| 国产精品3| 丝袜美腿制服人妻二区中文字幕| 999 久久久| 操高情无码| 国产精彩女在线观看视频| 日本三级一区二区 在线| 东京热av男人的天堂| 国产亚洲深夜激情| 国产熟妇一区二区| 一级特黄aaa大片在线观看成人一级片在线观看 | 欧美黄色大片在线观看 | 欧美在线播放aaaa| 天天综合青苹果| 亚洲欧美精品一区天堂久久| 91视频综合| 有码人妻系列| 最新日日夜夜天天干干| 人妻内射一区二区在线视频| 国产精品探花在线| 偷拍亚洲视频一区二区三区四区| 超碰人妻在线| 欧美色999| 91国产大片| 手机在线视频国内精品| 天堂av最新电影网| 国产毛片精品一区二区色欲黄A片| 久久国产乱子伦精品免费女,网站| 国产乱码久久| 操逼视频色| 欧美激情亚洲情色| a久久| 中文字幕人妻资源在线| 91麻豆一二三区| 大香蕉九九| www久久国产精品| 精品久久久不卡一区二区| 91粉嫩萝控精品福利网站_精品影音先锋国| 久久久啊啊啊| 亚洲人在线成线成人| 日韩人妻播放| 99re免费| 东京热熟女亚洲视频网站| 色婷网| 无码一区免费在线不卡| 国产精品3| 色噜噜综合在线| 欧美精品99久久久**| 9999亚洲电影| 尤物视频偷拍免费| caoni国产亚洲av| 久久同城AV| 欧美色视频在线| 中文字幕78| 成人日韩3| 日本欧美色| 探花一区二区三| 老汉网| 中文字幕一区二区免费在线| 天天享受天天看| 亚洲一区日韩精品| 久久久久久九九九九-美女久久久久久久-成人AV| 特色a在线上| 熟女丝袜视频| 操屄日韩| 少妇同性| 93人人操人人| 亚洲男人天堂视频| 不卡啪啪视频| 精精品人妻一区二区三区| 另类天堂| 少妇久久久久久久| 毛片17S| 国产精品露脸在线观看| 中文字幕神马久久| 日韩成人大片在线观看| 成人一二三区| 亚洲、日韩、综合、另类| 91P0RNY大屁股人妻| 色九九九综合| 欧日a| 精品人妻一区二区三区四区| 久操99| 亚洲国产av中文字幕久久| 操淫穴亚洲五月丁香 | 骚熟女吞| 国产人妻天天干精品| 欧美亚洲手机在线| 人妻天天爽夜夜爽精品2| 99久久久无码精品国产人| 啊啊啊啊啊啊啊啊要喷了| 国产精品熟女丝袜一区二区| 欧美熟妇精品黑人巨大91| 国产怡红院| 白天啪啪晚上啪啪视频| 91久久久视| 久热超碰| 人妻久久久久久| 欧美很很操视频| 欧美成人一级免费电影| 国产精品一区二区校花| 日韩99精品视频综合区| a片久久久久久久久久久久 | 婷婷五月在线视频| 国内毛片无码一级毛片| 亚洲精品a人片在线观看视| 日韩色欲久久一二三四区| 国产一级不卡在线观看| 亚洲第一免费视频| 日日噜噜夜夜狠狠视频无| 欧美一区二区福利在线| 国产精品网址| 先锋色眉乱伦资源| 韩国成人精品久久久免费看| 亚洲无码免费看| 亚洲欧美中文一区二区三| 中文字幕aⅴ在线视频| 欧亚乱色熟女一区二区| 久久久久成人亚洲国产| 抽插无码高清一区| 久9热| 欧美综合自拍成人自拍第二十页| 色香阁在线| 欧美狠狠操| 欧日韩在线观看| 941超碰| 无码二级三级| 91 综合 色| 97色欧州| 艳美熟妇先锋一二三区| 亚洲最大无码中文字幕网站| 亚洲欧洲综合av在线| 久操97| 91在线观看,天天综合| 美女干逼2| 色哟哟-国产专区| 人人操人人插 - 百度 - 百度| 亚洲天天操| 亚洲日本激情| 欧美成人午夜免费福利785| 一起草精品人妻| 麻豆精品久久久久久久| 97超碰热线| 99re在线视频| 91欧美综合| 八戒无码国产午夜福利| 在线人人人人人人精品超| 一区二区激情国产熟女| 欧美色天堂网在线视频| 91亚.色| av网站免费看| 欧美性爱第一区| 玖玖资源综合在线视频| 红杏大香蕉| 欧美成人一区二区| 国产免费内射视频| 国产JDAV无码视频在线观看| 亚洲砖码砖专无区2023| 日韩精品99999| 欧美亚洲日韩16色| 漂亮人妻被强中文字幕hd| 中文字幕丰满人妻日本| 日韩av不卡在线观看| 熟女啪啪视频| 日韩成人人妻网站| 亚洲影院成人| 日韩精品视频在线观看一卡二卡| 伊人影院中文字幕| 天美传媒av一区二区| 试看60秒 爽| 插欧洲美女欧美精品| 久久综合久久综合人久久夜精品| 曰本道人妻久久久在线不卡色视频| 亚洲天天在线| 92午夜免费福利视频| 自拍盗摄一区| 欲色综合| 亚洲国产成人精品无码专区| 亚洲官网在线| 后入人妻无码| 国产成人精品无码久久| 欧美激情视频一区二区三区不卡| 自拍第一页| 十八禁视频一区二区| 色综合色色| 亚洲男人天堂2| 热无码中文亚洲H一道本一区二区| 超碰在线99| 无码操逼网| 一级A片女人高潮叫床| 伊人婷婷五月天| 久久婷婷一区二| 日本999精品| 97超碰影音| 日韩中文9| 日韩综合成人免费视频| 91久久国产综合久久| 欧美瑟综合| 人妻-91porn| 强奸熟女一区二区三区| 亚洲精品一区二区精品| 精品福利视频| 欧美超碰97| 久久久蜜桃一区二区三区| 日日摸日日弄日日拍| 性爱乱伦一区| 玖玖超碰熟| 美国aaaaa一级黄片| 秋霞一区二区三区四区五区六区七区| 亚洲日韩国产精品| 加勒比在线视频| 91国模| 久久秀这里有精品| 亚洲精品久久久久久久蜜桃臀| 丁香五月色情| 91M一社| 综合激情五月天| 青青草原香蕉日本Ap| 欧美视频在线视频免费va| 夜夜操夜夜高潮夜夜爽国产精品区| 国产女人操逼视频| 91劲爆| 亚欧高清v| 密臀国产在线| 五月丁香六月婷综合成人综合| 精品高清牛人盗摄一区二区三区中文字幕A片免费在线观看 | 国模精品一区二区三区苹果色戒| 福利天天都操| 久久人人看| 97干在线视频| 国产高清不卡视频| 免费的黄片有限公司| 亚洲精品国产精品乱码不卡| 免费的黄片有限公司| 亚洲少妇在线影音| 国产精品婬乱一级毛片彝族| 成人精品欧洲亚洲| 久久精品三级影视| 暴力av在线| 青草青青久久久久久国产| 国产1024在线播放| 91精品成人| 丰满高潮18xxxx| 神马久久免费电影观看| 五月婷婷啪啪| 国产午夜精品理论片一二三区区 | 成人五月香网在线| 日韩视频中文字幕| 97AV在线免费观看| 极品色www影院| 爱逼综合| 好好的日:com久久九九| 曰本人妻人人澡人人夹| 青青草在线视频播放器| 欧美日韩情色一区二区| a片 xxxx受爽视频| 婷婷五月天无码 | 无码 有码 国产18p| 91亚洲影视| 欧美日韩一干二干| 久久性爱大全| 亚洲无码视频免费在线观看网址!| 99re69| 欧美性爱另类综合| 偷拍偷窥与盗摄视频专区| 亚洲男人的天堂网| 五月色综合| 久久黄色视频一区二区三区 | 黄页av| 天天摸夜夜操视频| 香蕉精品二区二区| 色婷婷激一区二区三区| 亚州色阁| 91精品丝袜在线观看| 欧美草草高清日韩视频| 人人操av| 免费精品无码一级毛片牛牛影视 | 蜜桃臀一区二区aV| 探花激情视频| 97在线免费看视频| 久久久久久久九九九九九九| 久久超碰国产一区二区三区| 久久久久亚洲精品| 激情综合网五月婷婷五月天| 亚洲玖玖爱| 懂色综合久久久| 亚洲一区日韩精品中文字幕 | 久久精品国内Av熟女高清| 成熟熟女国产精品一区二区| 人人操人人大香蕉| 日本熟妇人妻一区二区三区| 综合色图,成人综合网| 国产无码精品成人| 久久久精品久久| 激情五月综合网| 亚洲最新Av| 久久九操在线观看| 91一区二区| 老熟女搡BBBB搡BBBB视频| 十八禁电影伊人网| 91欧美高清| 无码人妻精品一区二区中文| 久久久精品,3| 亚洲人在线| 91精品无码人妻系列| 国产夫妻性生活视频| 日韩欧美天堂| 26uuu欧美| 精品一区二区在线针对华人免费观看这里只有精品免费观看 | 亚洲乱码尤物193YW| 国产剧情在线| 人人操人人射人人干| 欧亚综合一卡二卡中文字幕| 伊人久久综合影院| 美女久久久久久久久久久| 97日视频| 久7色| 久久av一级av少妇av高潮| 婷婷激情四射| 老女人老91妇女老热女| 婷婷四五区| 成人免费福利在线观看| 秋霞怕怕片| 久久久久久无码人妻中文字幕| 亚洲AV无码天美传媒一区| 天天天天天天天天天天干美女| av亚欧| 国产激情在线| 午夜无码熟妇丰满人妻| 国产13区| 色五月婷婷网| 亚洲AV无码国产精品久久久久| 夜草网站| 欧美亚洲首页| 美女网站黄页| 亚洲男人的天堂在线看| 好湿好紧好爽 视频| 色色五月丁香| 秋霞影音一区二区三区| 国产黄色在线播放观看| 美女网站91| 久久97视频| 大香蕉手机在线| 日本超碰色精品| 日韩电影天堂视频一区二区| 九九久久首页| 你操综合| 人妻熟女一区在| 国产成人无码久久精品| 激情综合二| 97人妻免费中文字幕| 人妻一区二区三区视频| 国产色图乱伦| 久草加勒比一区在线| 亚洲在线91| 熟女91网站| 澳门色噜噜色噜噜色噜噜色噜噜色噜噜| 国产一区二区在线播放,久久亚洲精品中文字幕第一区,亚洲精品在线中文字幕视频 | 1.igao73.com 加入收藏 免费专区 国产精品 中文字幕 日韩精品 欧美精品 精彩 | 69视频福利导航| 九九热免费在线国产视频伊人五月| 久久人妻丝袜一区二区三| 五月丁香啪啪啪| 国产激情久久| 婷婷五月天基地| 免费啪啪啪网站18岁| 性爱1区| 久久98| 偷拍欧美综合| 青青11操操操操操操操操| 91亚洲黑人| 日韩一级二级在线| 成人日本精品九区| 四虎视频在线观看| 亚洲永久永久永久永久一级一级一级精品 | 久久久一区二区三区四曲免费听 | 日本二区不卡| 高精欧美色| 好吊色综合| 尤物视频视频官网| 无码外流操逼视频| 欧美,日韩综合久久| 强奸乱伦动态污图免费| 秋霞视频一区二区|