pip install multi-rake หากการติดตั้งล้มเหลวเนื่องจากข้อผิดพลาด cld narrowing conversions กว่าการติดตั้งด้วย
CFLAGS= " -Wno-narrowing " pip install multi-rakeข้อความภาษาอังกฤษเราไม่ได้ระบุภาษาอย่างชัดเจนหรือรายการของคำหยุด (ใช้รายการในตัว)
from multi_rake import Rake
text_en = (
'Compatibility of systems of linear constraints over the set of '
'natural numbers. Criteria of compatibility of a system of linear '
'Diophantine equations, strict inequations, and nonstrict inequations '
'are considered. Upper bounds for components of a minimal set of '
'solutions and algorithms of construction of minimal generating sets '
'of solutions for all types of systems are given. These criteria and '
'the corresponding algorithms for constructing a minimal supporting '
'set of solutions can be used in solving all the considered types of '
'systems and systems of mixed types.'
)
rake = Rake ()
keywords = rake . apply ( text_en )
print ( keywords [: 10 ])
# ('minimal generating sets', 8.666666666666666),
# ('linear diophantine equations', 8.5),
# ('minimal supporting set', 7.666666666666666),
# ('minimal set', 4.666666666666666),
# ('linear constraints', 4.5),
# ('natural numbers', 4.0),
# ('strict inequations', 4.0),
# ('nonstrict inequations', 4.0),
# ('upper bounds', 4.0),
# ('mixed types', 3.666666666666667),ข้อความที่เขียนใน Esperanto (บทความเกี่ยวกับเสรีนิยม) ไม่มีรายการคำหยุดสำหรับภาษานี้พวกเขาจะถูกสร้างขึ้นจากข้อความที่ให้ไว้
text ประกอบด้วยสามย่อหน้าแรกของการแนะนำ text_for_stopwords - ข้อความอื่น ๆ ทั้งหมด
text = (
'Liberalismo estas politika filozofio aŭ mondrigardo konstruita en '
'ideoj de libereco kaj egaleco. Liberaluloj apogas larĝan aron de '
'vidpunktoj depende de sia kompreno de tiuj principoj, sed ĝenerale '
'ili apogas ideojn kiel ekzemple liberaj kaj justaj elektoj, '
'civitanrajtoj, gazetara libereco, religia libereco, libera komerco, '
'kaj privata posedrajto. Liberalismo unue iĝis klara politika movado '
'dum la Klerismo, kiam ĝi iĝis populara inter filozofoj kaj '
'ekonomikistoj en la okcidenta mondo. Liberalismo malaprobis heredajn '
'privilegiojn, ŝtatan religion, absolutan monarkion kaj la Didevena '
'Rajto de Reĝoj. La filozofo John Locke de la 17-a jarcento ofte '
'estas meritigita pro fondado de liberalismo kiel klara filozofia '
'tradicio. Locke argumentis ke ĉiu homo havas naturon rekte al vivo, '
'libereco kaj posedrajto kaj laŭ la socia '
'kontrakto, registaroj ne rajtas malobservi tiujn rajtojn. '
'Liberaluloj kontraŭbatalis tradician konservativismon kaj serĉis '
'anstataŭigi absolutismon en registaroj per reprezenta demokratio kaj '
'la jura hegemonio.'
)
rake = Rake ( max_words_unknown_lang = 3 )
keywords = rake . apply ( text , text_for_stopwords = other_text )
print ( keywords )
# ('serĉis anstataŭigi absolutismon', 9.0) # sought to replace absolutism
# ('filozofo john locke', 8.5), # philosopher John Locke
# ('locke argumentis', 4.5) # Locke argues
# ('justaj elektoj', 4.0), # fair elections
# ('libera komerco', 4.0), # free trade
# ('okcidenta mondo', 4.0), # western world
# ('ŝtatan religion', 4.0), # state religion
# ('absolutan monarkion', 4.0), # absolute monarchy
# ('didevena rajto', 4.0), # Dominican Rights
# ('socia kontrakto', 4.0), # social contract
# ('jura hegemonio', 4.0), # legal hegemony
# ('mondrigardo konstruita', 4.0) # worldview built
# ('vidpunktoj depende', 4.0), # views based
# ('sia kompreno', 4.0), # their understanding
# ('tiuj principoj', 4.0), # these principles
# ('gazetara libereco', 3.5), # freedom of press
# ('religia libereco', 3.5), # religious freedom
# ('privata posedrajto', 3.5), # private property
# ('libereco', 1.5), # liberty
# ('posedrajto', 1.5)] # propertyดังนั้นเราสามารถได้รับผลลัพธ์ที่ดีโดยไม่ต้องตั้งค่าคำหยุดอย่างชัดเจน
เริ่มต้นวัตถุ Rake
from multi_rake import Rake
rake = Rake (
min_chars = 3 ,
max_words = 3 ,
min_freq = 1 ,
language_code = None , # 'en'
stopwords = None , # {'and', 'of'}
lang_detect_threshold = 50 ,
max_words_unknown_lang = 2 ,
generated_stopwords_percentile = 80 ,
generated_stopwords_max_len = 3 ,
generated_stopwords_min_freq = 2 ,
)min_chars - คำถูกเลือกให้เป็นส่วนหนึ่งของคำหลักหากความยาวของมันคือ> = min_chars ค่าเริ่มต้น 3
max_words - จำนวนคำสูงสุดในวลีที่พิจารณาว่าเป็นคำหลัก ค่าเริ่มต้น 3
MIN_FREQ - จำนวนขั้นต่ำของการเกิดขึ้นของวลีที่จะพิจารณาเป็นคำหลัก ค่าเริ่มต้น 1
language_code - ระบุรหัสภาษาเป็นสตริงที่จะใช้ชุดคำหยุดในตัว ดูรายการภาษาที่มีอยู่ หากภาษาไม่ได้ระบุอัลกอริทึมจะพยายามกำหนดภาษาด้วย CLD2 และใช้ชุดคำหยุดในตัวที่สอดคล้องกัน ไม่มีค่าเริ่มต้น
Stopwords - จัดเตรียมคอลเลกชันของคำหยุดของตัวเอง (โดยเฉพาะอย่างยิ่งตามที่ตั้งไว้ลดลง) แทนที่ language_code หากมีการระบุ ไม่มีค่าเริ่มต้น
เก็บ language_code และ stopwords เป็น None และคำหยุดจะถูกสร้างขึ้นจากข้อความที่ให้ไว้
lang_detect_threshold - เกณฑ์สำหรับความน่าจะเป็นของภาษาที่ตรวจพบใน CLD2 (0-100) ค่าเริ่มต้น 50
max_words_unknown_lang - เช่นเดียวกับ max_words แต่จะถูกใช้หากไม่ทราบภาษาและสร้างคำหยุดจากข้อความที่ให้ไว้ โดยปกติแล้วผลลัพธ์ที่ดีที่สุดจะได้รับเมื่อใช้ชุดคำสั่งที่สร้างขึ้นมาโดยเฉพาะในกรณีที่ไม่มีและการใช้งานคำพูดที่สร้างขึ้นซึ่งเกิดขึ้นอาจไม่สวยและอาจเป็นความคิดที่ดีเช่นการสร้างคำหลัก 2 คำสำหรับภาษาที่ไม่รู้จักและคำหลัก 3 คำสำหรับภาษาที่กำหนดไว้ล่วงหน้า ค่าเริ่มต้น 2
generated_stopwords_percentile - เพื่อสร้างคำสั่งเราสร้างการกระจายของทุกคำในข้อความโดยความถี่ คำเหนือเปอร์เซ็นไทล์นี้ (0 - 100) จะได้รับการพิจารณาว่าเป็นผู้สมัครที่จะกลายเป็นคำสั่ง ค่าเริ่มต้น 80
generated_stopwords_max_len - ความยาวอักขระสูงสุดของคำหยุดที่สร้างขึ้น ค่าเริ่มต้น 3
generated_stopwords_min_freq - ความถี่ขั้นต่ำของคำหยุดที่สร้างขึ้นในการแจกแจง ค่าเริ่มต้น 2
ใช้ Rake Object กับข้อความ
keywords = rake . apply (
text ,
text_for_stopwords = None ,
)ข้อความ - สตริงที่มีข้อความที่ควรสร้างคำหลัก
text_for_stopwords - สตริงที่มีข้อความซึ่งจะใช้สำหรับการสร้างคำหยุดข้าง text ตัวอย่างเช่นคุณมีบทความที่มีบทนำและส่วนย่อยหลายส่วน คุณรู้ว่าสำหรับจุดประสงค์ของคุณคำหลักจากบทนำจะเพียงพอคุณไม่ทราบภาษาของข้อความหรือคุณมีรายการคำสั่ง ดังนั้นคำหยุดสามารถสร้างจากข้อความเองและยิ่งคุณมีข้อความมากเท่าไหร่ก็ยิ่งดีขึ้นเท่านั้น กว่าที่คุณอาจระบุ text=introduction, text_for_stopwords=rest_of_your_text
อัลกอริทึม Rake ทำงานตามที่อธิบายไว้ใน Rose, S. , Engel, D. , Cramer, N. , & Cowley, W. (2010) การสกัดคำหลักอัตโนมัติจากเอกสารแต่ละฉบับ ใน MW Berry & J. Kogan (บรรณาธิการ), การขุดข้อความ: ทฤษฎีและแอปพลิเคชัน: John Wiley & Sons
การใช้งานนี้แตกต่างจากผู้อื่นโดยการสนับสนุนหลายภาษา โดยพื้นฐานแล้วคุณอาจให้ข้อความโดยไม่ทราบภาษา (ควรเขียนด้วยตัวอักษร cyrillic หรือละติน) โดยไม่มีรายการคำหยุดที่ชัดเจนและได้รับผลลัพธ์ที่เหมาะสม แม้ว่าผลลัพธ์ที่ดีที่สุดจะเกิดขึ้นได้ด้วยรายการคำพูดที่สร้างขึ้นอย่างละเอียด
เกิดอะไรขึ้นภายใต้ประทุน:
text และ text_for_stopwords เราสร้าง stopwords โดยการสร้างการกระจายความถี่ของคำในข้อความและกรองด้วยพารามิเตอร์ generated_stopwords_percentile , generated_stopwords_max_len , generated_stopwords_min_freq เราจะไม่สามารถสร้างมันได้อย่างสมบูรณ์แบบ แต่มันค่อนข้างง่ายที่จะหาบทความและคำบุพบทเพราะโดยปกติแล้วพวกเขาประกอบด้วย 3-4 ตัวอักษรและปรากฏบ่อยครั้ง คำหยุดเหล่านี้ประกอบกับตัวคั่นเครื่องหมายวรรคตอนช่วยให้เราได้รับผลลัพธ์ที่ดีสำหรับภาษาที่เราไม่เข้าใจ
ในระหว่างการกำหนดค่าเริ่มต้นของ Rake เท่านั้นควรใช้รหัสภาษาเท่านั้น
ที่เก็บได้กำหนดค่า linter การทดสอบและความครอบคลุม
สร้างสภาพแวดล้อมเสมือนจริงใหม่ภายในโฟลเดอร์ Multi_Rake เพื่อใช้งาน
python3 -m venv env
source env/bin/activate
make install-dev # install dependencies
make lint # run linter
make test # run tests and coverage อัลกอริทึม Rake: Rose, S. , Engel, D. , Cramer, N. , & Cowley, W. (2010) การสกัดคำหลักอัตโนมัติจากเอกสารแต่ละฉบับ ใน MW Berry & J. Kogan (บรรณาธิการ), การขุดข้อความ: ทฤษฎีและแอปพลิเคชัน: John Wiley & Sons
ใช้การใช้งานพื้นฐานโดย Fabianvf
Stopwords: Trec-kba จัดอันดับ NL