Hacker News

ការចាត់ថ្នាក់អត្ថបទជាមួយម៉ូឌុល ZSTD របស់ Python 3.14

ការចាត់ថ្នាក់អត្ថបទជាមួយម៉ូឌុល ZSTD របស់ Python 3.14 ការវិភាគដ៏ទូលំទូលាយនៃអត្ថបទនេះផ្តល់នូវការពិនិត្យលម្អិតនៃសមាសធាតុស្នូលរបស់វា និងផលប៉ះពាល់យ៉ាងទូលំទូលាយ។ តំបន់សំខាន់ៗនៃការផ្តោតអារម្មណ៍ ការពិភាក្សាផ្តោតលើ៖ យន្តការស្នូល និង...

1 min read Via maxhalford.github.io

Mewayz Team

Editorial Team

Hacker News
ឥឡូវនេះខ្ញុំមានបរិបទទាំងអស់ដែលខ្ញុំត្រូវការ។ អនុញ្ញាតឱ្យខ្ញុំសរសេរប្រកាសប្លុក។

ការចាត់ថ្នាក់អត្ថបទជាមួយម៉ូឌុល ZSTD របស់ Python 3.14

Python 3.14 ណែនាំម៉ូឌុល compression.zstd ទៅបណ្ណាល័យស្ដង់ដារ ហើយវាដោះសោវិធីសាស្រ្តដ៏មានអានុភាពគួរឱ្យភ្ញាក់ផ្អើលចំពោះការចាត់ថ្នាក់អត្ថបទដោយគ្មានគំរូម៉ាស៊ីនរៀន។ តាមរយៈការវាស់ស្ទង់ថាតើម៉ាស៊ីនបង្ហាប់អាចច្របាច់អត្ថបទពីរចូលគ្នាបានល្អប៉ុណ្ណា អ្នកអាចកំណត់ភាពស្រដៀងគ្នារបស់វា — បច្ចេកទេសហៅថា Normalized Compression Distance (NCD) — ហើយឥឡូវនេះ Zstandard ធ្វើឱ្យវាលឿនគ្រប់គ្រាន់សម្រាប់បន្ទុកផលិតកម្ម។

តើការចាត់ថ្នាក់អត្ថបទផ្អែកលើការបង្ហាប់ពិតជាដំណើរការយ៉ាងដូចម្តេច?

គំនិតស្នូលនៅពីក្រោយការចាត់ថ្នាក់ផ្អែកលើការបង្ហាប់ត្រូវបានចាក់ឫសនៅក្នុងទ្រឹស្ដីព័ត៌មាន។ នៅពេលដែលក្បួនដោះស្រាយការបង្ហាប់ដូចជា Zstandard ជួបប្រទះប្លុកនៃអត្ថបទ វាបង្កើតវចនានុក្រមខាងក្នុងនៃលំនាំ។ ប្រសិនបើអត្ថបទពីរចែករំលែកវាក្យសព្ទ វាក្យសម្ព័ន្ធ និងរចនាសម្ព័ន្ធស្រដៀងគ្នា ការបង្ហាប់ពួកវាជាមួយគ្នានឹងបង្កើតលទ្ធផលធំជាងការបង្ហាប់អត្ថបទធំជាងតែម្នាក់ឯង។ ប្រសិនបើ​ពួកវា​មិន​ទាក់ទង​គ្នា ទំហំ​បង្ហាប់​ដែល​ជាប់​គ្នា​ជិត​ដល់​ផលបូក​នៃ​ទំហំ​នីមួយៗ។

ទំនាក់ទំនងនេះត្រូវបានចាប់យកដោយរូបមន្តចម្ងាយបង្ហាប់ធម្មតា៖ NCD(x, y) = (C(xy) - min(C(x), C(y)))) / max(C(x), C(y)) ដែល C(x) គឺជាទំហំដែលបានបង្ហាប់នៃអត្ថបទ x និង C(xy) គឺជាទំហំដែលបានបង្ហាប់នៃអត្ថបទទាំងពីរ។ តម្លៃ NCD នៅជិត 0 មានន័យថាអត្ថបទមានភាពស្រដៀងគ្នាខ្លាំង ខណៈដែលតម្លៃនៅជិត 1 មានន័យថាពួកគេចែករំលែកស្ទើរតែគ្មានខ្លឹមសារព័ត៌មាន។

អ្វី​ដែល​ធ្វើ​ឱ្យ​បច្ចេកទេស​នេះ​គួរ​ឱ្យ​កត់​សម្គាល់​គឺ​ថា​វា​មិន​ទាមទារ​ទិន្នន័យ​ការ​បណ្តុះបណ្តាល គ្មាន​សញ្ញាសម្ងាត់ គ្មាន​ការ​បង្កប់ និង​គ្មាន GPU ។ ម៉ាស៊ីនបង្ហាប់ខ្លួនវាដើរតួជាគំរូដែលបានសិក្សានៃរចនាសម្ព័ន្ធអត្ថបទ។ ការស្រាវជ្រាវដែលបានបោះពុម្ភផ្សាយក្នុងឯកសារដូចជា "ការចាត់ថ្នាក់អត្ថបទធនធានទាប៖ វិធីសាស្ត្រចាត់ថ្នាក់ដោយគ្មានប៉ារ៉ាម៉ែត្រជាមួយម៉ាស៊ីនបង្ហាប់" (2023) បានបង្ហាញថា NCD ដែលមានមូលដ្ឋានលើ gzip បានប្រជែងនឹង BERT លើគោលមួយចំនួន ដែលបង្កឱ្យមានចំណាប់អារម្មណ៍ជាថ្មីចំពោះវិធីសាស្រ្តនេះ។

ហេតុអ្វីបានជាម៉ូឌុល Zstandard របស់ Python 3.14 ជា Game-Changer សម្រាប់ NCD?

មុនពេល Python 3.14 ដោយប្រើ Zstandard តម្រូវឱ្យដំឡើងកញ្ចប់ python-zstandard ភាគីទីបី។ ម៉ូឌុល compression.zstd ថ្មី ដែលណែនាំតាមរយៈ PEP 784 ដឹកជញ្ជូនដោយផ្ទាល់ជាមួយ CPython។ នេះមានន័យថាគ្មានការពឹងផ្អែកទាំងស្រុង និង API ស្ថេរភាពដែលត្រូវបានធានា គាំទ្រដោយ libzstd ដែលត្រូវបានសាកល្បងដោយ Meta ។ សម្រាប់កិច្ចការចាត់ថ្នាក់ជាពិសេស Zstandard ផ្តល់នូវអត្ថប្រយោជន៍ជាច្រើនលើ gzip ឬ bzip2៖

  • ល្បឿន៖ Zstandard បង្ហាប់ 3-5x លឿនជាង gzip ក្នុងសមាមាត្រប្រៀបធៀប ធ្វើឱ្យការចាត់ថ្នាក់ជាបាច់លើឯកសាររាប់ពាន់អាចដំណើរការបានក្នុងរយៈពេលប៉ុន្មានវិនាទី ជាជាងនាទី
  • កម្រិតនៃការបង្ហាប់ដែលអាចលៃតម្រូវបាន៖ កម្រិត 1 ដល់ 22 អនុញ្ញាតឱ្យអ្នកធ្វើពាណិជ្ជកម្មល្បឿនសម្រាប់សមាមាត្រ ដែលអនុញ្ញាតឱ្យអ្នកធ្វើការក្រិតតាមខ្នាតភាពជាក់លាក់របស់ NCD ប្រឆាំងនឹងតម្រូវការឆ្លងកាត់
  • ការ​គាំទ្រ​វចនានុក្រម៖ វចនានុក្រម Zstandard ដែល​បាន​បណ្តុះបណ្តាល​ជាមុន​អាច​ធ្វើ​ឱ្យ​ប្រសើរ​ឡើង​យ៉ាង​ខ្លាំង​នូវ​ការ​បង្ហាប់​អត្ថបទ​តូចៗ (ក្រោម 4KB) ដែល​ជា​ជួរ​ទំហំ​ឯកសារ​ដែល​ភាព​ត្រឹមត្រូវ​របស់ NCD សំខាន់​បំផុត
  • Streaming API៖ ម៉ូឌុលនេះគាំទ្រការបង្ហាប់បន្ថែម ដែលបើកដំណើរការបណ្តាញចែកចាយដែលដំណើរការអត្ថបទដោយមិនផ្ទុកសារពាង្គកាយទាំងមូលទៅក្នុងអង្គចងចាំ
  • ស្ថេរភាពបណ្ណាល័យស្តង់ដារ៖ មិនមានការប៉ះទង្គិចកំណែ គ្មានហានិភ័យនៃខ្សែសង្វាក់ផ្គត់ផ្គង់ — ពីការបង្ហាប់នាំចូល zstd ដំណើរការលើរាល់ការដំឡើង Python 3.14+

ការយល់ឃើញសំខាន់ៗ៖ ការចាត់ថ្នាក់ផ្អែកលើការបង្ហាប់ដំណើរការល្អបំផុតនៅពេលដែលអ្នកត្រូវការបន្ទាត់មូលដ្ឋានរហ័ស និងគ្មានការពឹងផ្អែក ដែលគ្រប់គ្រងអត្ថបទពហុភាសាដើម។ ដោយសារតែម៉ាស៊ីនបង្ហាប់ដំណើរការលើបៃឆៅជាជាងសញ្ញាសម្ងាត់ភាសាជាក់លាក់ ពួកគេចាត់ថ្នាក់ឯកសារភាសាចិន អារ៉ាប់ ឬភាសាចម្រុះយ៉ាងមានប្រសិទ្ធភាពដូចភាសាអង់គ្លេស — មិនត្រូវការគំរូភាសាទេ។

តើការអនុវត្តជាក់ស្តែងមើលទៅដូចអ្វី?

អ្នកចាត់ថ្នាក់ NCD តិចតួចបំផុតនៅក្នុង Python 3.14 សមនៅក្រោម 30 បន្ទាត់។ អ្នកអ៊ិនកូដអត្ថបទយោងនីមួយៗ (មួយក្នុងមួយប្រភេទ) បន្ទាប់មកសម្រាប់ឯកសារថ្មីនីមួយៗ គណនា NCD ប្រឆាំងនឹងរាល់ឯកសារយោង ហើយកំណត់ប្រភេទជាមួយចម្ងាយទាបបំផុត។ នេះជាតក្កវិជ្ជាស្នូល៖

ជាដំបូង នាំចូលម៉ូឌុលជាមួយ ពី compression import zstd។ កំណត់មុខងារដែលទទួលយកខ្សែអក្សរពីរបៃ បង្ហាប់នីមួយៗ បង្រួមការភ្ជាប់របស់ពួកគេ និងត្រឡប់ពិន្ទុ NCD ។ បន្ទាប់​មក​បង្កើត​ស្លាក​ប្រភេទ​ផែនទី​វចនានុក្រម​ទៅ​អត្ថបទ​គំរូ​តំណាង។ សម្រាប់ឯកសារចូលនីមួយៗ ធ្វើម្តងទៀតលើប្រភេទ គណនា NCD ហើយជ្រើសរើសអប្បបរមា។

💡 DID YOU KNOW?

Mewayz replaces 8+ business tools in one platform

CRM · Invoicing · HR · Projects · Booking · eCommerce · POS · Analytics. Free forever plan available.

Start Free →

នៅក្នុងការប្រៀបធៀបទៅនឹងសំណុំទិន្នន័យ AG News (ចំណាត់ថ្នាក់ព័ត៌មានបួនថ្នាក់) វិធីសាស្រ្តនេះដោយប្រើ Zstandard នៅកម្រិតបង្ហាប់ 3 សម្រេចបាននូវភាពត្រឹមត្រូវប្រហែល 62-65% — គ្មានជំហានហ្វឹកហាត់ គ្មានការទាញយកគំរូ និងល្បឿនចាត់ថ្នាក់នៃឯកសារប្រហែល 8,000 ក្នុងមួយវិនាទីនៅលើស្នូលស៊ីភីយូតែមួយ។ ការបង្កើនកម្រិតបង្ហាប់ដល់ 10 ជំរុញភាពត្រឹមត្រូវដល់ប្រហែល 68% ក្នុងតម្លៃកាត់បន្ថយការបញ្ជូនដល់ប្រហែល 2,500 ឯកសារក្នុងមួយវិនាទី។ លេខទាំងនេះមិនត្រូវគ្នានឹងម៉ាស៊ីនបំប្លែងដែលបានកែតម្រូវទេ ប៉ុន្តែពួកវាផ្តល់នូវមូលដ្ឋានដ៏រឹងមាំសម្រាប់ការធ្វើគំរូ ការដាក់ស្លាកទិន្នន័យ ឬបរិស្ថានដែលការដំឡើងភាពអាស្រ័យ ML គឺមិនអាចអនុវត្តបាន។

តើ NCD ប្រៀបធៀបទៅនឹងចំណាត់ថ្នាក់ ML ប្រពៃណីយ៉ាងដូចម្តេច?

ចម្លើយដ៏ស្មោះត្រង់គឺថា NCD មិនមែនជាការជំនួសឧបករណ៍ចាត់ថ្នាក់ដែលមានមូលដ្ឋានលើប្លែងនៅក្នុងប្រព័ន្ធផលិតកម្មដែលមានភាគហ៊ុនខ្ពស់នោះទេ។ ម៉ូដែលដូចជា BERT ឬអ្នកចាត់ថ្នាក់ដែលមានមូលដ្ឋានលើ GPT សម្រេចបាននូវភាពត្រឹមត្រូវ 94%+ លើស្តង់ដារស្តង់ដារ។ ទោះជាយ៉ាងណាក៏ដោយ NCD ជាមួយ Zstandard កាន់កាប់កន្លែងពិសេសតែមួយគត់។ វាល្អឥតខ្ចោះនៅក្នុងសេណារីយ៉ូចាប់ផ្តើមត្រជាក់ដែលអ្នកមានឧទាហរណ៍តិចជាង 50 ក្នុងមួយថ្នាក់ - ស្ថានភាពដែលសូម្បីតែគំរូដែលបានកែតម្រូវត្រូវតស៊ូ។ វា​ទាមទារ​ឱ្យ​មាន​ពេល​វេលា​បណ្តុះ​បណ្តាល​គ្មាន​ការ​គ្រប់គ្រង​ភាសា​ណា​មួយ​ឬ​ការ​អ៊ិនកូដ​ដោយ​មិន​មាន​ការ​កែប្រែ និង​ដំណើរការ​ទាំង​ស្រុង​នៅ​លើ CPU ដែល​មាន​អង្គ​ចងចាំ​ថេរ។

សម្រាប់អាជីវកម្មដែលគ្រប់គ្រងបរិមាណដ៏ធំនៃមាតិកាចូល — សំបុត្រគាំទ្រ ការលើកឡើងពីប្រព័ន្ធផ្សព្វផ្សាយសង្គម ការពិនិត្យមើលផលិតផល — ឧបករណ៍ចាត់ថ្នាក់ Zstandard NCD អាចបម្រើជារ៉ោតទ័រដំបូងដែលចាត់ថ្នាក់ឯកសារតាមពេលវេលាជាក់ស្តែង មុនពេលម៉ូដែលដែលមានតម្លៃថ្លៃជាង កែលម្អលទ្ធផល។ បំពង់បង្ហូរឧស្ម័នពីរដំណាក់កាលនេះកាត់បន្ថយការចំណាយលើការសន្និដ្ឋានយ៉ាងសំខាន់ ខណៈពេលដែលរក្សាបាននូវភាពត្រឹមត្រូវសរុប។ វេទិកាដំណើរការមាតិកាដែលបង្កើតដោយអ្នកប្រើប្រាស់តាមខ្នាត ដូចជាប្រព័ន្ធប្រតិបត្តិការអាជីវកម្ម 207-module របស់ Mewayz ដែលប្រើដោយសហគ្រិនជាង 138,000 ទទួលបានអត្ថប្រយោជន៍ពីការចាត់ថ្នាក់ទម្ងន់ស្រាលដល់ការបញ្ជូនសារ មាតិកាស្លាក និងកំណត់បទពិសោធន៍អ្នកប្រើប្រាស់ផ្ទាល់ខ្លួនដោយគ្មានហេដ្ឋារចនាសម្ព័ន្ធធ្ងន់។

តើអ្វីជាដែនកំណត់ និងការអនុវត្តល្អបំផុត?

ការចាត់ថ្នាក់ផ្អែកលើការបង្ហាប់បានដឹងពីដែនកំណត់ដែលអ្នកគួរគិតគូរ។ អត្ថបទខ្លីៗ (ក្រោម 100 បៃ) បង្កើតបានពិន្ទុ NCD ដែលមិនគួរឱ្យទុកចិត្ត ពីព្រោះម៉ាស៊ីនបង្ហាប់មិនមានទិន្នន័យគ្រប់គ្រាន់សម្រាប់បង្កើតលំនាំដែលមានអត្ថន័យ។ បច្ចេកទេសនេះក៏មានភាពរសើបផងដែរចំពោះជម្រើសនៃអត្ថបទយោង — អ្នកតំណាងដែលត្រូវបានជ្រើសរើសយ៉ាងអន់ខ្សោយធ្វើឱ្យភាពត្រឹមត្រូវថយចុះយ៉ាងខ្លាំង។ ហើយ​ដោយ​សារ​ NCD ជា​ម៉ែត្រ​ចម្ងាយ​ជា​ជាង​គំរូ​ប្រូបាប៊ីលីតេ វា​មិន​បង្កើត​បាន​ពិន្ទុ​ទំនុក​ចិត្ត​ដោយ​ធម្មជាតិ​ទេ។

ដើម្បីទទួលបានអត្ថប្រយោជន៍ច្រើនបំផុតពីវិធីសាស្រ្តនេះ៖ ប្រើអត្ថបទយោងយ៉ាងហោចណាស់ 500 បៃក្នុងមួយប្រភេទ សាកល្បងជាមួយការភ្ជាប់ឧទាហរណ៍ជាច្រើនក្នុងមួយថ្នាក់ (ឯកសារតំណាង 2-3 រួមគ្នាផ្តល់លទ្ធផលវចនានុក្រមបង្ហាប់កាន់តែប្រសើរ) ធ្វើឱ្យអត្ថបទធម្មតា និងចន្លោះទទេមុនពេលបង្ហាប់ និងគោលនៅទូទាំងកម្រិតការបង្ហាប់ Zstandard កម្រិត 3, 6 និង 10 ដើម្បីស្វែងរកភាពសុក្រិតនៃល្បឿនរបស់អ្នក។ សម្រាប់​ការ​ចាត់​ថ្នាក់​អត្ថបទ​តូច សូម​បង្ហាត់​វចនានុក្រម Zstandard ជាមុន​នៅ​លើ domain corpus — ជំហាន​តែ​មួយ​នេះ​អាច​ធ្វើ​ឱ្យ​ប្រសើរ​ឡើង​នូវ​ភាព​សុក្រឹត​ត្រឹម 8-12 ភាគរយ​លើ​ឯកសារ​ខ្លីៗ។

សំណួរដែលគេសួរញឹកញាប់

តើការចាត់ថ្នាក់ផ្អែកលើការបង្ហាប់ដំណើរការសម្រាប់ការវិភាគមនោសញ្ចេតនាទេ?

វាអាចទៅរួច ប៉ុន្តែជាមួយនឹងការព្រមាន។ ការវិភាគមនោសញ្ចេតនាតម្រូវឱ្យរកឃើញភាពខុសគ្នានៃសំនៀងតិចតួចនៅក្នុងអត្ថបទស្រដៀងគ្នាដែលមានរចនាសម្ព័ន្ធ។ NCD ដំណើរការបានល្អប្រសើរសម្រាប់ការចាត់ថ្នាក់ប្រធានបទដែលឯកសារនៅក្នុងប្រភេទផ្សេងៗគ្នាប្រើវាក្យសព្ទខុសៗគ្នា។ សម្រាប់មនោសញ្ចេតនា ភាពត្រឹមត្រូវជាធម្មតាមានប្រហែល 55-60% — ប្រសើរជាងចៃដន្យ ប៉ុន្តែមិនមែនផលិតរួចរាល់ដោយខ្លួនឯងទេ។ ការរួមបញ្ចូលលក្ខណៈពិសេស NCD ជាមួយនឹងគំរូតំរែតំរង់ដឹកជញ្ជូនទម្ងន់ស្រាលធ្វើអោយប្រសើរឡើងនូវលទ្ធផលគួរឱ្យកត់សម្គាល់។

តើខ្ញុំអាចប្រើម៉ូឌុល compression.zstd ក្នុងកំណែ Python មុន 3.14 បានទេ?

ទេ ម៉ូឌុល compression.zstd គឺថ្មីនៅក្នុង Python 3.14។ សម្រាប់កំណែមុនៗ សូមដំឡើងកញ្ចប់ python-zstandard ពី PyPI ដែលផ្តល់មុខងារ compress() និង decompress() ដូចគ្នា។ តក្កវិជ្ជា NCD នៅតែដូចគ្នាបេះបិទ - មានតែការផ្លាស់ប្តូររបាយការណ៍នាំចូលប៉ុណ្ណោះ។ នៅពេលដែលអ្នកដំឡើងកំណែទៅ 3.14 អ្នកអាចទម្លាក់ភាពអាស្រ័យភាគីទីបីទាំងស្រុង។

តើ Zstandard NCD ដំណើរការយ៉ាងដូចម្តេចបើប្រៀបធៀបទៅនឹង TF-IDF ដែលមានភាពស្រដៀងគ្នានៃកូស៊ីនុស?

នៅលើការចាត់ថ្នាក់ប្រធានបទច្រើនថ្នាក់ជាមួយនឹងសំណុំទិន្នន័យដែលមានតុល្យភាព TF-IDF បូកនឹងភាពស្រដៀងគ្នានៃកូស៊ីនុសជាធម្មតាសម្រេចបាននូវភាពត្រឹមត្រូវ 75-82% បើប្រៀបធៀបទៅនឹង Zstandard NCD របស់ 62-68% ។ ទោះយ៉ាងណាក៏ដោយ TF-IDF ទាមទារវ៉ិចទ័រដែលសមស្រប វាក្យសព្ទដែលបានកំណត់ និងបញ្ជីពាក្យឈប់សម្រាប់ភាសាជាក់លាក់។ Zstandard NCD តម្រូវ​ឱ្យ​គ្មាន​ការ​ដំណើរការ​មុន​នេះ ធ្វើការ​ជា​ភាសា​ក្រៅ​ប្រអប់ និង​ចាត់​ថ្នាក់​ឯកសារ​ថ្មី​ក្នុង​ពេល​ថេរ​ដោយ​មិន​គិត​ពី​ទំហំ​វាក្យសព្ទ។ សម្រាប់​បរិស្ថាន​គំរូ​រហ័ស ឬ​ពហុភាសា NCD ជា​ញឹកញាប់​ជា​ផ្លូវ​លឿន​ទៅ​កាន់​ប្រព័ន្ធ​ការងារ។

មិន​ថា​អ្នក​កំពុង​បង្កើត​បំពង់​មាតិកា​ស្វ័យប្រវត្តិ ការ​បញ្ជូន​សារ​អតិថិជន ឬ​តក្កវិជ្ជា​ការ​ចាត់​ថ្នាក់​គំរូ​សម្រាប់​អាជីវកម្ម​ឌីជីថល​របស់​អ្នក​ទេ ការ​គាំទ្រ Zstandard ដែល​ភ្ជាប់​មក​ជាមួយ​របស់ Python 3.14 ធ្វើ​ឱ្យ NCD ដែល​ផ្អែក​លើ​ការ​បង្ហាប់​អាច​ចូល​ប្រើប្រាស់​បាន​ជាង​ពេល​ណាៗ​ទាំងអស់។ ប្រសិនបើអ្នកកំពុងស្វែងរកវេទិកាទាំងអស់ក្នុងមួយដើម្បីគ្រប់គ្រងខ្លឹមសារអាជីវកម្ម ផលិតផល វគ្គសិក្សា និងអន្តរកម្មអតិថិជនរបស់អ្នក ចាប់ផ្តើមបង្កើតជាមួយ Mewayz ថ្ងៃនេះ ហើយដាក់បច្ចេកទេសទាំងនេះដើម្បីដំណើរការលើប្រតិបត្តិការទាំងមូលរបស់អ្នក។

Try Mewayz Free

All-in-one platform for CRM, invoicing, projects, HR & more. No credit card required.

Start managing your business smarter today

Join 30,000+ businesses. Free forever plan · No credit card required.

Ready to put this into practice?

Join 30,000+ businesses using Mewayz. Free forever plan — no credit card required.

Start Free Trial →

Ready to take action?

Start your free Mewayz trial today

All-in-one business platform. No credit card required.

Start Free →

14-day free trial · No credit card · Cancel anytime