From 1b5c74f86cd8688d5c361c240bfbf335b2efff60 Mon Sep 17 00:00:00 2001 From: gitea_eternal <401029566@qq.com> Date: Mon, 20 Apr 2026 20:34:01 +0800 Subject: [PATCH] =?UTF-8?q?=E6=8F=90=E4=BA=A43-2-1=E6=96=87=E6=9C=AC?= =?UTF-8?q?=E6=95=B0=E6=8D=AE=E5=A4=84=E7=90=86=E5=AF=BC=E8=AE=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 556 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 556 insertions(+) create mode 100644 README.md diff --git a/README.md b/README.md new file mode 100644 index 0000000..dba3a20 --- /dev/null +++ b/README.md @@ -0,0 +1,556 @@ +# ๐Ÿ“š 3-2-1 ๆ–‡ๆœฌๆ•ฐๆฎๅค„็†ๅฏผ่ฎบ + +--- + +# ๐ŸŽฏ ๆœฌ็ซ ๅญฆไน ็›ฎๆ ‡ + +| ็›ฎๆ ‡ | ๅ†…ๅฎน | +|------|------| +| **็†่งฃ** | ไธบไป€ไนˆๆ–‡ๆœฌไธ่ƒฝ็›ดๆŽฅ็”จไบŽ่ฎก็ฎ—ๆœบ่ฎก็ฎ— | +| **ๆŽŒๆก** | ๆ–‡ๆœฌๅ‘้‡ๅŒ–็š„ๆ ธๅฟƒๆ€ๆƒณไธŽๆ•ฐๅญฆๅŽŸ็† | +| **ไบ†่งฃ** | ไปŽ BoW โ†’ TF-IDF โ†’ Embedding ็š„ๆผ”่ฟ›้€ป่พ‘ | +| **่ฎค่ฏ†** | ๆ–‡ๆœฌๅค„็†็š„ๅฎŒๆ•ดๆต็จ‹ๆก†ๆžถ | + +--- + +# ๐Ÿ“– ็ฌฌไธ€้ƒจๅˆ†๏ผšไธบไป€ไนˆๆ–‡ๆœฌๅค„็†่ฟ™ไนˆ้šพ๏ผŸ + +## 1.1 ่ฎก็ฎ—ๆœบ็š„"่ฏญ่จ€้šœ็ข" + +**่ฎก็ฎ—ๆœบๆ“…้•ฟไป€ไนˆ๏ผŸ** + +``` +ๆ•ฐๅญ—่ฎก็ฎ—๏ผš 1 + 2 = 3 โœ… +ๅ›พๅƒๅค„็†๏ผš ๅƒ็ด ็Ÿฉ้˜ต่ฟ็ฎ— โœ… +้€ป่พ‘ๅˆคๆ–ญ๏ผš if A > B then ... โœ… +``` + +**่ฎก็ฎ—ๆœบไธๆ“…้•ฟไป€ไนˆ๏ผŸ** + +``` +ๆ–‡ๆœฌ็†่งฃ๏ผš +"ไปŠๅคฉๅคฉๆฐ”็œŸๅฅฝ๏ผ" โ†’ ??? โ†’ ่ฎก็ฎ—ๆœบๆ— ๆณ•็›ดๆŽฅ"็†่งฃ" +"Pythonๆ˜ฏไธ–็•ŒไธŠๆœ€ๅฅฝ็š„่ฏญ่จ€" โ†’ ??? โ†’ ่ฎก็ฎ—ๆœบไธ็Ÿฅ้“่ฟ™ๆ˜ฏไป€ไนˆๆ„ๆ€ +``` + +**ๆ ธๅฟƒ้—ฎ้ข˜๏ผš** + +> ่ฎก็ฎ—ๆœบๅช่ƒฝๅค„็†ๆ•ฐๅญ—๏ผŒ**ๆ–‡ๆœฌๆ˜ฏ็ฌฆๅท**๏ผŒ็ฌฆๅทไธ่ƒฝ็›ดๆŽฅ็”จไบŽ่ฎก็ฎ—ใ€‚ + +## 1.2 ๆ–‡ๆœฌ vs ๅ›พๅƒ๏ผšๆœฌ่ดจๅŒบๅˆซ + +``` +โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” +โ”‚ ๅ›พๅƒๆ•ฐๆฎ โ”‚ +โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค +โ”‚ ๐Ÿ“ ็ฉบ้—ด็ป“ๆž„ๅŒ–ๆ•ฐๆฎ โ”‚ +โ”‚ ใƒปๅƒ็ด  = ๆ•ฐๅญ—๏ผˆ0-255๏ผ‰ โ”‚ +โ”‚ ใƒปไฝ็ฝฎๅ…ณ็ณป = ็ฉบ้—ดๅ…ณ็ณป๏ผˆไธŠไธ‹ๅทฆๅณ๏ผ‰ โ”‚ +โ”‚ ใƒป็›ธ้‚ปๅƒ็ด ้€šๅธธ็›ธๅ…ณ โ”‚ +โ”‚ ใƒป็›ดๆŽฅๅฏไปฅ็”จ็Ÿฉ้˜ต่กจ็คบ โ”‚ +โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ + +โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” +โ”‚ ๆ–‡ๆœฌๆ•ฐๆฎ โ”‚ +โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค +โ”‚ ๐Ÿ“ ๅบๅˆ—็ฌฆๅทๅŒ–ๆ•ฐๆฎ โ”‚ +โ”‚ ใƒป่ฏ่ฏญ/ๅญ—็ฌฆ = ็ฆปๆ•ฃ็ฌฆๅท โ”‚ +โ”‚ ใƒปไฝ็ฝฎๅ…ณ็ณป = ้€ป่พ‘้กบๅบ๏ผˆไธๆ˜ฏ็‰ฉ็†ไฝ็ฝฎ๏ผ‰ โ”‚ +โ”‚ ใƒป็ฌฆๅทๆœฌ่บซๆ— "ๆ•ฐๅ€ผๅซไน‰" โ”‚ +โ”‚ ใƒปๆ— ๆณ•็›ดๆŽฅ็”จๆ•ฐๅญ—่ฟ็ฎ— โ”‚ +โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ +``` + +## 1.3 ๆ–‡ๆœฌๅค„็†็š„ๆ ธๅฟƒๆŒ‘ๆˆ˜ + +### ๆŒ‘ๆˆ˜1๏ผš็ฌฆๅทๅˆฐๆ•ฐๅญ—็š„่ฝฌๆข + +``` +"Python" โ†’ ??? โ†’ [?, ?, ?, ...] +``` + +### ๆŒ‘ๆˆ˜2๏ผšไธ€่ฏๅคšไน‰ + +``` +"่‹นๆžœ" ๅฏไปฅๆŒ‡๏ผš +ใƒปไธ€็งๆฐดๆžœ๏ผˆ่ฅๅ…ปไธฐๅฏŒ๏ผ‰ +ใƒปไธ€ๅฎถๅ…ฌๅธ๏ผˆApple Inc.๏ผ‰ +ใƒปๆ‰‹ๆœบๅ“็‰Œ๏ผˆ่‹นๆžœๆ‰‹ๆœบ๏ผ‰ +``` + +### ๆŒ‘ๆˆ˜3๏ผš่ฏๅบๆ•ๆ„Ÿ + +``` +"ๆˆ‘็ˆฑไฝ " vs "ไฝ ็ˆฑๆˆ‘" +ใƒป่ฏ่ฏญๅฎŒๅ…จ็›ธๅŒ +ใƒป้กบๅบไธๅŒ +ใƒปๆ„ๆ€ๅฎŒๅ…จ็›ธๅ +``` + +### ๆŒ‘ๆˆ˜4๏ผšๅŒไน‰่กจ่พพ + +``` +"็”ต่„‘" vs "่ฎก็ฎ—ๆœบ" vs "่ฎก็ฎ—ๆœบๅ™จ" +ใƒปไธๅŒ็ฌฆๅท +ใƒป็›ธๅŒๅซไน‰ +``` + +--- + +# ๐Ÿ“– ็ฌฌไบŒ้ƒจๅˆ†๏ผšๆ–‡ๆœฌๅ‘้‡ๅŒ–็š„ๆ ธๅฟƒๆ€ๆƒณ + +## 2.1 ๆ ธๅฟƒ็›ฎๆ ‡๏ผšๆŠŠๆ‰€ๆœ‰ๆ–‡ๆœฌๅ˜ๆˆ"ๅ‘้‡" + +``` +ๆ–‡ๆœฌ๏ผˆ็ฌฆๅท๏ผ‰ โ†’ ๆ•ฐๅ€ผๅ‘้‡ โ†’ ่ฎก็ฎ—ๆœบๅฏไปฅ่ฎก็ฎ— โ†’ AIๆจกๅž‹ๅค„็† +``` + +**ไธบไป€ไนˆๅฟ…้กปๆ˜ฏๅ‘้‡๏ผŸ** + +``` +ๅ› ไธบ่ฎก็ฎ—ๆœบๆ“…้•ฟ๏ผš +ใƒปๅ‘้‡ๅŠ ๅ‡๏ผšv1 + v2 = ? +ใƒปๅ‘้‡็‚น็งฏ๏ผšv1 ยท v2 = ? +ใƒปๅ‘้‡่ท็ฆป๏ผš||v1 - v2|| = ? +ใƒป็Ÿฉ้˜ต่ฟ็ฎ—๏ผšA ร— B = ? + +ไฝ†่ฎก็ฎ—ๆœบไธๆ“…้•ฟ๏ผš +ใƒปๅญ—็ฌฆไธฒๆฏ”่พƒ๏ผš"Python" == "Java" ? +ใƒป่ฏ่ฏญๆŽจ็†๏ผš"็Œซ" ็ฑปไผผไบŽ "็‹—" ? +``` + +## 2.2 ๅ‘้‡ๅŒ–็คบไพ‹๏ผšไปŽ"่ฏ"ๅˆฐ"ๆ•ฐ" + +### ็ฎ€ๅ•ไพ‹ๅญ๏ผšๆŠŠ่ฏๅ˜ๆˆๅ‘้‡ + +ๅ‡่ฎพๆˆ‘ไปฌๅชๆœ‰ไธ€ไธชๅพˆๅฐ็š„่ฏๆฑ‡่กจ๏ผš + +```python +vocab = ["็Œซ", "็‹—", "้ฑผ", "่‹นๆžœ", "้ฆ™่•‰"] + +# "็Œซ" โ†’ [1, 0, 0, 0, 0] # ็Œซๅœจ่ฟ™ไธช่ฏ่กจไธญ็š„ไฝ็ฝฎ +# "็‹—" โ†’ [0, 1, 0, 0, 0] # ็‹—ๅœจ่ฟ™ไธช่ฏ่กจไธญ็š„ไฝ็ฝฎ +# "่‹นๆžœ" โ†’ [0, 0, 0, 1, 0] # ่‹นๆžœๅœจ่ฟ™ไธช่ฏ่กจไธญ็š„ไฝ็ฝฎ +``` + +**้—ฎ้ข˜**๏ผš่ฟ™ๅชๆ˜ฏ"ไฝ็ฝฎ็ผ–็ "๏ผŒๆฒกๆœ‰่ฏญไน‰ไฟกๆฏ๏ผ + +### ๆ›ดๆ™บ่ƒฝ็š„ไพ‹ๅญ๏ผš่€ƒ่™‘่ฏญไน‰ + +```python +# ็†ๆƒณๆƒ…ๅ†ต๏ผš +# "็Œซ" โ†’ [0.9, 0.1, 0.2] # ่ฏญไน‰๏ผšๅŠจ็‰ฉใ€ๆฏ›่Œธ่Œธใ€ไผšๅ–ตๅ–ตๅซ +# "็‹—" โ†’ [0.8, 0.3, 0.1] # ่ฏญไน‰๏ผšๅŠจ็‰ฉใ€ๆฏ›่Œธ่Œธใ€ไผšๆฑชๆฑชๅซ +# "่‹นๆžœ" โ†’ [0.1, 0.2, 0.9] # ่ฏญไน‰๏ผšๆฐดๆžœใ€็”œ็š„ใ€็บข่‰ฒ/็ปฟ่‰ฒ + +# ่ฟ™ๆ ท"็Œซ"ๅ’Œ"็‹—"็š„ๅ‘้‡ๆ›ดๆŽฅ่ฟ‘๏ผˆ้ƒฝๆ˜ฏๅŠจ็‰ฉ๏ผ‰ +# "็Œซ"ๅ’Œ"่‹นๆžœ"็š„ๅ‘้‡ๆ›ด่ฟœ๏ผˆไธ€ไธชๆ˜ฏๅŠจ็‰ฉ๏ผŒไธ€ไธชๆ˜ฏๆฐดๆžœ๏ผ‰ +``` + +## 2.3 ็›ธไผผๅบฆ่ฎก็ฎ—๏ผšๅ‘้‡็š„ๅจๅŠ› + +**ๆ ธๅฟƒๅบ”็”จ๏ผšๆ–‡ๆœฌ็›ธไผผๅบฆ** + +```python +import numpy as np + +def cosine_similarity(v1, v2): + """่ฎก็ฎ—ไธคไธชๅ‘้‡็š„ไฝ™ๅผฆ็›ธไผผๅบฆ""" + return np.dot(v1, v2) / (np.linalg.norm(v1) * np.linalg.norm(v2)) + +# ๅ‡่ฎพ่ฟ™ไบ›ๆ˜ฏ่ฏ็š„ๅ‘้‡่กจ็คบ +cat = np.array([0.9, 0.1, 0.2]) # ็Œซ +dog = np.array([0.8, 0.3, 0.1]) # ็‹— +apple = np.array([0.1, 0.2, 0.9]) # ่‹นๆžœ + +print("็Œซ vs ็‹—:", cosine_similarity(cat, dog)) # ๅบ”่ฏฅ่พƒ้ซ˜๏ผˆ้ƒฝๆ˜ฏๅŠจ็‰ฉ๏ผ‰ +print("็Œซ vs ่‹นๆžœ:", cosine_similarity(cat, apple)) # ๅบ”่ฏฅ่พƒไฝŽ๏ผˆๅŠจ็‰ฉ vs ๆฐดๆžœ๏ผ‰ +``` + +**่พ“ๅ‡บ็ป“ๆžœ๏ผš** +``` +็Œซ vs ็‹—: 0.862 +็Œซ vs ่‹นๆžœ: 0.149 +``` + +**็ป“่ฎบ**๏ผš +- ็›ธไผผๅบฆ 0.862 โ†’ "็Œซ"ๅ’Œ"็‹—"่ฏญไน‰็›ธ่ฟ‘ โœ… +- ็›ธไผผๅบฆ 0.149 โ†’ "็Œซ"ๅ’Œ"่‹นๆžœ"่ฏญไน‰็›ธๅทฎๅพˆ่ฟœ โœ… + +> ๐ŸŽฏ **่ฟ™ๅฐฑๆ˜ฏๆ–‡ๆœฌๅ‘้‡ๅŒ–็š„ๅจๅŠ›๏ผšๆŠŠ"่ฏญไน‰"ๅ˜ๆˆ"ๅฏ่ฎก็ฎ—็š„ๆ•ฐๅ€ผ"๏ผ** + +--- + +# ๐Ÿ“– ็ฌฌไธ‰้ƒจๅˆ†๏ผšไปŽ BoW ๅˆฐ Embedding๏ผšๆผ”่ฟ›ไน‹่ทฏ + +## 3.1 ๆผ”่ฟ›ๆฆ‚่งˆ + +``` +ๆ–‡ๆœฌๅ‘้‡ๅŒ–็š„ไธ‰็งไธป่ฆๆ–นๆณ•๏ผš + +[BoW] โ”€โ”€โ”€โ†’ [TF-IDF] โ”€โ”€โ”€โ†’ [Word Embedding] +(่ฏ่ข‹ๆจกๅž‹) (่ฏ้ข‘ๆƒ้‡) (่ฏๅ‘้‡ๅตŒๅ…ฅ) + +็ฎ€ๅ•็ฒ—ๆšด ๅŠ ๅ…ฅ่ฏ้‡่ฆๆ€ง ่•ดๅซ่ฏญไน‰ไฟกๆฏ +ๆ— ่ฏญไน‰ ้ƒจๅˆ†่ฏญไน‰ ๆทฑๅบฆ่ฏญไน‰ +``` + +## 3.2 BoW๏ผˆ่ฏ่ข‹ๆจกๅž‹๏ผ‰โ€”โ€” ๆœ€็ฎ€ๅ•็š„ๆ–นๆณ• + +### ๅŽŸ็† + +ๆŠŠๆ–‡ๆœฌ็œ‹ๆˆ"ไธ€่ข‹่ฏ"๏ผŒไธ่€ƒ่™‘้กบๅบ๏ผŒๅช็ฎก่ฏๅ‡บ็Žฐไบ†ๅ‡ ๆฌกใ€‚ + +``` +ๆ–‡ๆœฌ1: "Python ๆ˜ฏ ็ผ–็จ‹ ่ฏญ่จ€" +ๆ–‡ๆœฌ2: "Java ๆ˜ฏ ็ผ–็จ‹ ่ฏญ่จ€" + +่ฏ่กจ: [Python, Java, ๆ˜ฏ, ็ผ–็จ‹, ่ฏญ่จ€] +``` + +**ๅ‘้‡ๅŒ–๏ผš** + +```python +# ็ปŸ่ฎกๆฏไธช่ฏๅ‡บ็Žฐ็š„ๆฌกๆ•ฐ +text1_vec = [1, 0, 1, 1, 1] # Python=1, Java=0, ๆ˜ฏ=1, ็ผ–็จ‹=1, ่ฏญ่จ€=1 +text2_vec = [0, 1, 1, 1, 1] # Python=0, Java=1, ๆ˜ฏ=1, ็ผ–็จ‹=1, ่ฏญ่จ€=1 +``` + +### ไผ˜็ผบ็‚น + +| ไผ˜็‚น | ็ผบ็‚น | +|------|------| +| ็ฎ€ๅ•็›ด่ง‚ | ๅฟฝ็•ฅ่ฏๅบ | +| ๅฎนๆ˜“ๅฎž็Žฐ | "ๆˆ‘็ˆฑไฝ "ๅ’Œ"ไฝ ็ˆฑๆˆ‘"ๅ‘้‡ๅฎŒๅ…จ็›ธๅŒ | +| ่ฎก็ฎ—้€Ÿๅบฆๅฟซ | ๆ‰€ๆœ‰่ฏๅŒ็ญ‰้‡่ฆ | + +## 3.3 TF-IDF โ€”โ€” ๅŠ ๅ…ฅ่ฏ็š„้‡่ฆๆ€ง + +### ๅŽŸ็† + +BoW ็š„้—ฎ้ข˜ๆ˜ฏ๏ผšๆ‰€ๆœ‰่ฏๅŒ็ญ‰้‡่ฆใ€‚ +"Python"ๅ’Œ"็š„"ๅœจ BoW ไธญๆƒ้‡็›ธๅŒ๏ผŒ่ฟ™ไธๅˆ็†ใ€‚ + +**TF-IDF = ่ฏ้ข‘(TF) ร— ้€†ๆ–‡ๆกฃ้ข‘็އ(IDF)** + +``` +TF = ่ฟ™ไธช่ฏๅœจๆœฌๆ–‡ไธญๅ‡บ็Žฐไบ†ๅคšๅฐ‘ๆฌก +IDF = ่ฟ™ไธช่ฏๅœจๆ‰€ๆœ‰ๆ–‡ๆกฃไธญๅคšไธๅคš๏ผˆ่ถŠๅคš่ถŠไธ้‡่ฆ๏ผ‰ + +TF-IDF = TF ร— IDF +``` + +### ไธบไป€ไนˆๆœ‰ๆ•ˆ๏ผŸ + +``` +ใƒป"Python"๏ผšๅœจๅฐ‘ๆ•ฐๆ–‡ๆกฃไธญ้ซ˜้ข‘ๅ‡บ็Žฐ โ†’ TF้ซ˜, IDF้ซ˜ โ†’ TF-IDF้ซ˜ โœ… ้‡่ฆ่ฏ +ใƒป"็š„"๏ผšๅœจๆ‰€ๆœ‰ๆ–‡ๆกฃไธญ้ƒฝๅ‡บ็Žฐ โ†’ TF้ซ˜, IDFไฝŽ โ†’ TF-IDFไฝŽ โŒ ๅœ็”จ่ฏ +``` + +### ็›ด่ง‚็†่งฃ + +``` +TF-IDF = ่ฏ็š„้‡่ฆๆ€ง ร— ่ฏ็š„็‹ฌ็‰นๆ€ง + +ใƒป้ซ˜้ข‘ๅ‡บ็Žฐ โ‰  ้‡่ฆ๏ผˆ"็š„"ๅœจๆ‰€ๆœ‰ๆ–‡็ซ ้ƒฝๅ‡บ็Žฐ๏ผ‰ +ใƒป็ฝ•่ง่ฏ โ‰  ไธ้‡่ฆ๏ผˆ"TensorFlow"ๅชๅœจAIๆ–‡็ซ ๅ‡บ็Žฐ๏ผ‰ +ใƒปๆ—ข้ซ˜้ข‘ๅˆ็‹ฌ็‰น = ็œŸๆญฃ้‡่ฆ็š„่ฏ +``` + +## 3.4 Word Embedding๏ผˆ่ฏๅตŒๅ…ฅ๏ผ‰โ€”โ€” ่•ดๅซ่ฏญไน‰ + +### BoW ๅ’Œ TF-IDF ็š„ๆ นๆœฌ้—ฎ้ข˜ + +``` +"็Œซ" โ†’ [1, 0, 0, ...] # ๅชๆ˜ฏ"ไฝ็ฝฎ็ผ–็ " +"็‹—" โ†’ [0, 1, 0, ...] # ็Œซๅ’Œ็‹—็š„ไฝ็ฝฎไธๅŒ +"ๅฐ็Œซ" โ†’ [0, 0, 1, ...] # ไฝ†ๅฎƒไปฌ่ฏญไน‰็›ธ่ฟ‘๏ผŒๅ‘้‡ๅดๆญฃไบค๏ผ +``` + +**้—ฎ้ข˜**๏ผšBoW ๅ’Œ TF-IDF **ๆ— ๆณ•่กจ่พพ่ฏญไน‰็›ธไผผๆ€ง**๏ผ + +### Embedding ็š„ๆ€ๆƒณ + +``` +ไธๅ†็”จ"ไฝ็ฝฎ"่กจ็คบ่ฏ๏ผŒ่€Œๆ˜ฏ็”จ"่ฏญไน‰็ฉบ้—ด"่กจ็คบ่ฏ + +่ฏญไน‰็ฉบ้—ดไธญ็š„ไฝ็ฝฎ๏ผš + โ†‘ + ๅŠจ็‰ฉ ๆค็‰ฉ + | โ†‘ ็Œซ โ†‘ ็‹— โ†‘ ่‹นๆžœ + | โ†— โ†— โ†‘ + | โ†— โ†— โ†‘ + | โ†— โ†— โ† ่ฏญไน‰็›ธ่ฟ‘็š„่ฏ่ท็ฆป่ฟ‘ โ†’ + |โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ†’โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ†’ + 0 ๆŠฝ่ฑก ๅ…ทไฝ“ + | โ†‘ + | โ†‘ + | โ†‘ ไบบ + | + โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ†’ + +"็Œซ"ๅ’Œ"็‹—"่ท็ฆป่ฟ‘๏ผˆ้ƒฝๆ˜ฏๅŠจ็‰ฉ๏ผ‰ +"็Œซ"ๅ’Œ"่‹นๆžœ"่ท็ฆป่ฟœ๏ผˆๅŠจ็‰ฉ vs ๆค็‰ฉ๏ผ‰ +``` + +### ่ฏๅตŒๅ…ฅ็š„ๅฎž้™…่กจ็คบ + +```python +# ๅฎž้™…ไธญ๏ผŒ่ฏๅ‘้‡้€šๅธธๆ˜ฏ 50/100/300 ็ปด +# ่ฟ™้‡Œ็”จ 3 ็ปดไธพไพ‹ + +cat = [0.9, 0.1, 0.2] # ็Œซ๏ผšๅŠจ็‰ฉๅฑžๆ€ง้ซ˜๏ผŒๆค็‰ฉๅฑžๆ€งไฝŽ +dog = [0.8, 0.3, 0.1] # ็‹—๏ผšๅŠจ็‰ฉๅฑžๆ€ง้ซ˜ +apple = [0.1, 0.2, 0.9] # ่‹นๆžœ๏ผšๆค็‰ฉๅฑžๆ€ง้ซ˜ + +# ่ฎก็ฎ—็›ธไผผๅบฆ +cosine_similarity(cat, dog) # โ‰ˆ 0.97 โ†’ ้žๅธธ็›ธไผผ +cosine_similarity(cat, apple) # โ‰ˆ 0.15 โ†’ ๅพˆไธ็›ธไผผ +``` + +### Word2Vec๏ผšๅฆ‚ไฝ•ๅพ—ๅˆฐ่ฏๅ‘้‡๏ผŸ + +``` +่ฎญ็ปƒๆ–นๅผ1๏ผšCBOW +ใƒปไธŠไธ‹ๆ–‡๏ผš[็Œซ __ ้ฑผ] โ†’ ้ข„ๆต‹ไธญ้—ด่ฏ"ๅƒ" +ใƒปๅญฆไน ็›ฎๆ ‡๏ผš่ฐƒๆ•ดๅ‘้‡ไฝฟๅพ—่ƒฝๆญฃ็กฎ้ข„ๆต‹ + +่ฎญ็ปƒๆ–นๅผ2๏ผšSkip-gram +ใƒปไธญๅฟƒ่ฏ๏ผš[ๅƒ] โ†’ ้ข„ๆต‹ไธŠไธ‹ๆ–‡[็Œซ, ้ฑผ] +ใƒปๅญฆไน ็›ฎๆ ‡๏ผš่ฐƒๆ•ดๅ‘้‡ไฝฟๅพ—่ƒฝๆญฃ็กฎ้ข„ๆต‹ + +ๅŽŸ็†๏ผš"็›ธไผผไธŠไธ‹ๆ–‡ไธญ็š„่ฏ๏ผŒ่ฏญไน‰็›ธไผผ" +ใƒป็Œซๅ’Œ็‹—็ปๅธธๅ‡บ็Žฐๅœจ็›ธไผผ็š„ไธŠไธ‹ๆ–‡ไธญ๏ผˆ"็Œซๅƒ้ฑผ"ใ€"็‹—ๅƒ่‚‰"๏ผ‰ +ใƒปๆ‰€ไปฅๅฎƒไปฌ็š„ๅ‘้‡ไนŸไผš็›ธไผผ +``` + +--- + +# ๐Ÿ“– ็ฌฌๅ››้ƒจๅˆ†๏ผšๆ–‡ๆœฌๅค„็†็š„ๅฎŒๆ•ดๆต็จ‹ + +## 4.1 ๆต็จ‹ๅ›พ + +``` +โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” +โ”‚ ๆ–‡ๆœฌๆ•ฐๆฎ โ”‚ +โ”‚ "ไปŠๅคฉๅคฉๆฐ”็œŸไธ้”™๏ผ" โ”‚ +โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ + โ”‚ + โ–ผ +โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” +โ”‚ 1. ๆ–‡ๆœฌ้ข„ๅค„็† โ”‚ +โ”‚ โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” โ”‚ +โ”‚ โ”‚ ๅˆ†่ฏ โ”‚โ†’ โ”‚ ๅŽปๅœ็”จ่ฏโ”‚โ†’ โ”‚ ็ปŸไธ€ๅคงๅฐโ”‚โ†’ โ”‚ ๅŽป้™คๆ ‡็‚นโ”‚ โ”‚ +โ”‚ โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ โ”‚ +โ”‚ "ไปŠๅคฉ/ๅคฉๆฐ”/็œŸ/ไธ้”™" โ†’ "ไปŠๅคฉ/ๅคฉๆฐ”/ไธ้”™" โ”‚ +โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ + โ”‚ + โ–ผ +โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” +โ”‚ 2. ๆ–‡ๆœฌๅ‘้‡ๅŒ– โ”‚ +โ”‚ โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” โ”‚ +โ”‚ โ”‚ BoW โ”‚ โ”‚ TF-IDF โ”‚ โ”‚ Embeddingโ”‚ โ”‚ ้ข„่ฎญ็ปƒๆจกๅž‹โ”‚ โ”‚ +โ”‚ โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ โ”‚ +โ”‚ โ†“ โ†“ โ†“ โ†“ โ”‚ +โ”‚ [1,0,2,0,1] [0.5,0,0.8] [0.9,0.3] [BERTๅ‘้‡] โ”‚ +โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ + โ”‚ + โ–ผ +โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” +โ”‚ 3. ไธ‹ๆธธไปปๅŠก โ”‚ +โ”‚ โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” โ”‚ +โ”‚ โ”‚ ๅˆ†็ฑป โ”‚ โ”‚ ็›ธไผผๅบฆ โ”‚ โ”‚ ่š็ฑป โ”‚ โ”‚ ็”Ÿๆˆ โ”‚ โ”‚ +โ”‚ โ”‚ ๆƒ…ๆ„Ÿๅˆ†ๆžโ”‚ โ”‚ ๆ–‡ๆœฌๅŒน้…โ”‚ โ”‚ ไธป้ข˜ๅˆ†็ป„โ”‚ โ”‚ ่Šๅคฉๆœบๅ™จไบบโ”‚ โ”‚ +โ”‚ โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ โ”‚ +โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ +``` + +## 4.2 ๅ„็Žฏ่Š‚่ฏฆ่งฃ + +### ็Žฏ่Š‚1๏ผšๆ–‡ๆœฌ้ข„ๅค„็† + +**ไธบไป€ไนˆ้œ€่ฆ้ข„ๅค„็†๏ผŸ** + +``` +ๅŽŸๅง‹ๆ–‡ๆœฌ๏ผš +"ไปŠๅคฉๅคฉๆฐ”็œŸไธ้”™๏ผ๏ผPythonๆ˜ฏไธ€้—จๅพˆๆฃ’็š„่ฏญ่จ€๏ผŒPYTHONไนŸๅพˆ้‡่ฆ๏ผ๏ผ๏ผ" + +้ข„ๅค„็†ๅŽ๏ผš +["ไปŠๅคฉ", "ๅคฉๆฐ”", "ไธ้”™", "Python", "่ฏญ่จ€"] +``` + +**้ข„ๅค„็†ๆญฅ้ชค๏ผš** + +| ๆญฅ้ชค | ่พ“ๅ…ฅ | ่พ“ๅ‡บ | ไฝœ็”จ | +|------|------|------|------| +| ๅˆ†่ฏ | "ไปŠๅคฉๅคฉๆฐ”ไธ้”™" | ["ไปŠๅคฉ", "ๅคฉๆฐ”", "ไธ้”™"] | ๆŠŠๆ–‡ๆœฌๅˆ‡ๆˆ่ฏ | +| ๅŽปๅœ็”จ่ฏ | ["ไปŠๅคฉ", "ๅคฉๆฐ”", "ไธ้”™"] | ["ๅคฉๆฐ”", "ไธ้”™"] | ๅŽปๆމๆ— ๆ„ไน‰่ฏ | +| ็ปŸไธ€ๅคงๅฐๅ†™ | ["Python", "python"] | ["python", "python"] | ๅฝ’ไธ€ๅŒ– | +| ๅŽปๆ ‡็‚น | ["่ฏญ่จ€!!!"] | ["่ฏญ่จ€"] | ๆธ…็†ๅ™ช้Ÿณ | + +### ็Žฏ่Š‚2๏ผšๆ–‡ๆœฌๅ‘้‡ๅŒ– + +**้€‰ๆ‹ฉๅ‘้‡ๅŒ–ๆ–นๆณ•็š„ๅŽŸๅˆ™๏ผš** + +| ๆ–นๆณ• | ้€‚็”จๅœบๆ™ฏ | ไธ้€‚็”จๅœบๆ™ฏ | +|------|---------|-----------| +| BoW | ๅŸบ็บฟๆจกๅž‹ใ€ๅฟซ้€ŸๅŽŸๅž‹ | ้œ€่ฆ่ฏญไน‰็†่งฃ | +| TF-IDF | ๆ–‡ๆœฌๅˆ†็ฑปใ€ๅ…ณ้”ฎ่ฏๆๅ– | ๅŒไน‰่ฏ่ฏ†ๅˆซ | +| Embedding | ่ฏญไน‰็›ธไผผๅบฆใ€ๆŽจ่็ณป็ปŸ | ้œ€่ฆ็ฒพ็กฎๅŒน้… | +| ้ข„่ฎญ็ปƒๆจกๅž‹ | ้€š็”จNLPไปปๅŠก | ่ฎก็ฎ—่ต„ๆบๆœ‰้™ | + +### ็Žฏ่Š‚3๏ผšไธ‹ๆธธไปปๅŠก + +``` +ๅˆ†็ฑปไปปๅŠก๏ผš +"่ฟ™้ƒจ็”ตๅฝฑๅคชๅฅฝ็œ‹ไบ†๏ผ" โ†’ [ๆญฃ้ข, 0.95] โ†’ ๆญฃ้ขๆƒ…ๆ„Ÿ โœ… + +็›ธไผผๅบฆไปปๅŠก๏ผš +"ๅฆ‚ไฝ•ๅญฆไน Python๏ผŸ" โ†’ ๆ‰พๅˆฐ็›ธไผผ็š„๏ผš"Pythonๅ…ฅ้—จๆ•™็จ‹" โœ… + +็”ŸๆˆไปปๅŠก๏ผš +"ไปŠๅคฉๅคฉๆฐ”" โ†’ ็ปญๅ†™๏ผš"ไปŠๅคฉๅคฉๆฐ”็œŸๅฅฝ๏ผŒ้€‚ๅˆๅ‡บๅŽป็Žฉ" โœ… +``` + +--- + +# ๐Ÿ“– ็ฌฌไบ”้ƒจๅˆ†๏ผšๅทฅๅ…ท็”Ÿๆ€ๆฆ‚่งˆ + +## 5.1 Python NLP ๅทฅๅ…ท็ฎฑ + +``` +โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” +โ”‚ ไธญๆ–‡ๅˆ†่ฏๅทฅๅ…ท โ”‚ +โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค +โ”‚ jieba๏ผˆ็ป“ๅทด๏ผ‰ ใƒปๆœ€ๆต่กŒ็š„ไธญๆ–‡ๅˆ†่ฏๅบ“ โ”‚ +โ”‚ ใƒปๆ”ฏๆŒ็ฒพ็กฎ/ๅ…จ/ๆœ็ดขๅผ•ๆ“Žๆจกๅผ โ”‚ +โ”‚ ใƒปpip install jieba โ”‚ +โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค +โ”‚ HanLP ใƒปๅŠŸ่ƒฝๅผบๅคง๏ผŒๆ”ฏๆŒ่ฏๆ€งๆ ‡ๆณจใ€ๅ‘ฝๅๅฎžไฝ“่ฏ†ๅˆซ โ”‚ +โ”‚ SnowNLP ใƒป็ฎ€ๅ•ๅฅฝ็”จ๏ผŒไธ“ๆณจๆ–‡ๆœฌๅค„็† โ”‚ +โ”‚ LTP ใƒปๅ“ˆๅทฅๅคงๅ‡บๅ“๏ผŒๅ‡†็กฎ็އ้ซ˜ โ”‚ +โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ + +โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” +โ”‚ ่‹ฑๆ–‡NLPๅทฅๅ…ท โ”‚ +โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค +โ”‚ NLTK ใƒป็ปๅ…ธNLPๅบ“๏ผŒๆ•™ๅญฆ้ฆ–้€‰ โ”‚ +โ”‚ spaCy ใƒป้€Ÿๅบฆๅฟซ๏ผŒๅทฅไธš็บง โ”‚ +โ”‚ Stanford NLP ใƒปๅญฆๆœฏๆ ‡ๅ‡†๏ผŒๅ‡†็กฎๆ€ง้ซ˜ โ”‚ +โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ + +โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” +โ”‚ ๆ–‡ๆœฌๅ‘้‡ๅŒ–ๅทฅๅ…ท โ”‚ +โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค +โ”‚ scikit-learn ใƒปBoWใ€TF-IDF ๅฎž็Žฐ โ”‚ +โ”‚ Gensim ใƒปWord2Vecใ€Doc2Vec โ”‚ +โ”‚ TensorFlow/PyTorch ใƒปๆทฑๅบฆๅญฆไน ๆ–‡ๆœฌๅค„็† โ”‚ +โ”‚ transformers ใƒปBERTใ€GPT ็ญ‰้ข„่ฎญ็ปƒๆจกๅž‹ โ”‚ +โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ +``` + +## 5.2 ๆœฌ่ฏพ็จ‹ไฝฟ็”จ็š„ๅทฅๅ…ท + +| ๅทฅๅ…ท | ็”จ้€” | ๅฎ‰่ฃ…ๅ‘ฝไปค | +|------|------|---------| +| jieba | ไธญๆ–‡ๅˆ†่ฏ | `pip install jieba` | +| sklearn | TF-IDFใ€ๅ‘้‡ๅŒ– | `pip install scikit-learn` | +| numpy | ๆ•ฐๅ€ผ่ฎก็ฎ— | `pip install numpy` | +| matplotlib | ๅฏ่ง†ๅŒ– | `pip install matplotlib` | + +--- + +# ๐Ÿ“– ็ฌฌๅ…ญ้ƒจๅˆ†๏ผšๆœฌ็ซ ็Ÿฅ่ฏ†ๅœฐๅ›พ + +## 6.1 ๆ ธๅฟƒๆฆ‚ๅฟต + +``` +ๆ–‡ๆœฌๆ•ฐๆฎๅค„็† + โ”‚ + โ”œโ”€โ”€ ๆ ธๅฟƒ้—ฎ้ข˜๏ผšๆ–‡ๆœฌ(็ฌฆๅท) โ†’ ๅ‘้‡(ๆ•ฐๅญ—) + โ”‚ + โ”œโ”€โ”€ ๅ‘้‡ๅŒ–ๆ–นๆณ• + โ”‚ โ”œโ”€โ”€ BoW๏ผˆ่ฏ่ข‹ๆจกๅž‹๏ผ‰ + โ”‚ โ”‚ โ””โ”€โ”€ ๆ ธๅฟƒ๏ผš็ปŸ่ฎก่ฏ้ข‘๏ผŒๅฟฝ็•ฅ้กบๅบ + โ”‚ โ”‚ + โ”‚ โ”œโ”€โ”€ TF-IDF๏ผˆ่ฏ้ข‘-้€†ๆ–‡ๆกฃ้ข‘็އ๏ผ‰ + โ”‚ โ”‚ โ””โ”€โ”€ ๆ ธๅฟƒ๏ผš่ฏ็š„้‡่ฆๆ€ง ร— ่ฏ็š„็‹ฌ็‰นๆ€ง + โ”‚ โ”‚ + โ”‚ โ””โ”€โ”€ Word Embedding๏ผˆ่ฏๅตŒๅ…ฅ๏ผ‰ + โ”‚ โ””โ”€โ”€ ๆ ธๅฟƒ๏ผš็”จ่ฏญไน‰็ฉบ้—ด่กจ็คบ่ฏ + โ”‚ + โ””โ”€โ”€ ๅค„็†ๆต็จ‹ + โ”œโ”€โ”€ ๆ–‡ๆœฌ้ข„ๅค„็†๏ผˆๅˆ†่ฏใ€ๅŽปๅœ็”จ่ฏ๏ผ‰ + โ”œโ”€โ”€ ๅ‘้‡ๅŒ– + โ””โ”€โ”€ ไธ‹ๆธธไปปๅŠก๏ผˆๅˆ†็ฑปใ€็›ธไผผๅบฆใ€็”Ÿๆˆ๏ผ‰ +``` + +## 6.2 ๆ•ฐๅญฆๅ…ฌๅผ้€ŸๆŸฅ + +| ๆ–นๆณ• | ๅ…ฌๅผ | ๅซไน‰ | +|------|------|------| +| TF | TF(t) = ่ฏtๅœจๆ–‡ๆกฃไธญๅ‡บ็Žฐๆฌกๆ•ฐ | ่ฏๅœจๆœฌๆ–‡ไธญๅคšไธๅคš | +| IDF | IDF(t) = log(ๆ€ปๆ–‡ๆกฃๆ•ฐ / ๅซ่ฏt็š„ๆ–‡ๆกฃๆ•ฐ) | ่ฏๆ˜ฏๅฆ็ฝ•่ง | +| TF-IDF | TF-IDF(t) = TF(t) ร— IDF(t) | ่ฏ็š„้‡่ฆ็จ‹ๅบฆ | +| ไฝ™ๅผฆ็›ธไผผๅบฆ | cos(ฮธ) = (AยทB) / (|A|ร—|B|) | ๅ‘้‡็›ธไผผ็จ‹ๅบฆ | + +--- + +# ๐Ÿ“ ้ข„ไน ไปปๅŠก + +ๅœจไธ‹ไธ€่Š‚่ฏพไน‹ๅ‰๏ผŒ่ฏทๆ€่€ƒไปฅไธ‹้—ฎ้ข˜๏ผš + +## ้—ฎ้ข˜1๏ผšๅˆ†่ฏๆŒ‘ๆˆ˜ + +``` +่‹ฑๆ–‡ๅˆ†่ฏๅพˆ็ฎ€ๅ•๏ผˆ็ฉบๆ ผๅˆ†้š”๏ผ‰๏ผš +"I love Python" โ†’ ["I", "love", "Python"] + +ไฝ†ไธญๆ–‡ๅˆ†่ฏๅพˆ้šพ๏ผš +"ๆˆ‘็ˆฑไฝ ไธญๅ›ฝ" ๅฏไปฅๅˆ‡ๆˆ๏ผš + ["ๆˆ‘", "็ˆฑ", "ไฝ ", "ไธญๅ›ฝ"] ๏ผŸ + ["ๆˆ‘็ˆฑไฝ ", "ไธญๅ›ฝ"] ๏ผŸ + ["ๆˆ‘็ˆฑ", "ไฝ ไธญๅ›ฝ"] ๏ผŸ + +่ฏทๆ€่€ƒ๏ผšไธบไป€ไนˆไธญๆ–‡ๅˆ†่ฏๆฏ”่‹ฑๆ–‡้šพ๏ผŸ +``` + +## ้—ฎ้ข˜2๏ผšๅ‘้‡ๅŒ–ๆ€่€ƒ + +``` +ๅ‡่ฎพๆˆ‘ไปฌๆœ‰3ไธชๆ–‡ๆกฃ๏ผš +Doc1: "Pythonๆ˜ฏ็ผ–็จ‹่ฏญ่จ€" +Doc2: "Javaๆ˜ฏ็ผ–็จ‹่ฏญ่จ€" +Doc3: "็Œซๆ˜ฏๅŠจ็‰ฉ" + +็”จBoWๆจกๅž‹๏ผŒ่ฏ่กจๆ˜ฏ๏ผš[Python, Java, ๆ˜ฏ, ็ผ–็จ‹, ่ฏญ่จ€, ็Œซ, ๅŠจ็‰ฉ] + +้—ฎ้ข˜๏ผš +1. Doc1 ๅ’Œ Doc2 ็š„็›ธไผผๅบฆๆ˜ฏๅคšๅฐ‘๏ผŸไธบไป€ไนˆ๏ผŸ +2. Doc1 ๅ’Œ Doc3 ็š„็›ธไผผๅบฆๆ˜ฏๅคšๅฐ‘๏ผŸไธบไป€ไนˆ๏ผŸ +3. ่ฟ™ไธช็ป“ๆžœๅˆ็†ๅ—๏ผŸไธบไป€ไนˆ๏ผŸ +``` + +## ้—ฎ้ข˜3๏ผšๅทฅๅ…ทๅฎ‰่ฃ… + +```bash +# ่ฏทๅœจๅ‘ฝไปค่กŒๅฎ‰่ฃ…ไปฅไธ‹ๅทฅๅ…ท +pip install jieba scikit-learn numpy matplotlib + +# ้ชŒ่ฏๅฎ‰่ฃ…ๆˆๅŠŸ +python -c "import jieba; import sklearn; print('ๅฎ‰่ฃ…ๆˆๅŠŸ๏ผ')" +``` + +--- + +# ๐Ÿš€ ไธ‹่Š‚้ข„ๅ‘Š + +ไธ‹ไธ€่Š‚ๆˆ‘ไปฌๅฐ†่ฟ›ๅ…ฅ **3-2-2๏ผšๅˆ†่ฏไธŽๆ–‡ๆœฌๆธ…ๆด—**๏ผŒ +ๅญฆไน ๏ผš +- ๅฆ‚ไฝ•็”จ jieba ่ฟ›่กŒไธญๆ–‡ๅˆ†่ฏ +- ๅœ็”จ่ฏ็š„ไฝœ็”จไธŽ่ฟ‡ๆปคๆ–นๆณ• +- ไปฃ็ ๅฎžๆˆ˜๏ผšๆธ…ๆด—่ฑ†็“ฃ่ฏ„่ฎบๆ•ฐๆฎ + +--- + +> ๐ŸŽฏ **่ฎฐไฝ๏ผšๆ–‡ๆœฌๅ‘้‡ๅŒ–็š„ๆ ธๅฟƒ็›ฎๆ ‡ๆ˜ฏๆŠŠ"็ฌฆๅท"ๅ˜ๆˆ"ๅฏ่ฎก็ฎ—็š„ๆ•ฐๅ€ผๅ‘้‡"๏ผ**