วิธีการทั่วไปในการแยกข้อความสำคัญออกจากประโยค (nlp)


27

รับประโยคเช่น:

Complimentary gym access for two for the length of stay ($12 value per person per day)

ฉันสามารถใช้วิธีการทั่วไปในการระบุคำว่ายิมหรือการเข้าถึงยิมอย่างไร


ดู Termine และเอกสารที่เกี่ยวข้องกับโครงการ: nactem.ac.uk/software/termine
MrMeritology

คำตอบ:


30

ตื้นN atural L anguage Pเทคนิค rocessing สามารถนำมาใช้กับแนวคิดสารสกัดจากประโยค

-------------------------------------------

ขั้นตอนเทคนิคตื้น NLP:

1) แปลงประโยคเป็นตัวพิมพ์เล็ก

2) ลบ stopwords (คำเหล่านี้เป็นคำทั่วไปที่พบในภาษาคำที่ต้องการมากและเป็นคำ ฯลฯ เป็นคำที่หยุดทั่วไป)

3) แยก n-gram เช่นลำดับที่ต่อเนื่องกันของรายการ n จากลำดับข้อความที่กำหนด (เพิ่ม n, แบบจำลองสามารถใช้เพื่อเก็บบริบทเพิ่มเติม)

4) กำหนดป้ายกำกับประโยค (คำนามคำกริยา ฯลฯ )

5) การดึงความรู้จากข้อความผ่านวิธีการวิเคราะห์ความหมาย / วากยสัมพันธ์เช่นพยายามเก็บคำที่มีน้ำหนักมากขึ้นในประโยคเช่น Noun / Verb

-------------------------------------------

Complimentary gym access for two for the length of stay ($12 value per person per day)ให้ตรวจสอบผลของการใช้ขั้นตอนข้างต้นเพื่อให้ประโยคของคุณ

ผลการค้นหา 1 กรัม:โรงยิม, การเข้าถึง, ความยาว, การเข้าพัก, คุณค่า, บุคคล, วัน

Summary of step 1 through 4 of shallow NLP:

1-gram          PoS_Tag   Stopword (Yes/No)?    PoS Tag Description
-------------------------------------------------------------------    
Complimentary   NNP                             Proper noun, singular
gym             NN                              Noun, singular or mass
access          NN                              Noun, singular or mass
for             IN         Yes                  Preposition or subordinating conjunction
two             CD                              Cardinal number
for             IN         Yes                  Preposition or subordinating conjunction
the             DT         Yes                  Determiner
length          NN                              Noun, singular or mass
of              IN         Yes                  Preposition or subordinating conjunction
stay            NN                              Noun, singular or mass
($12            CD                              Cardinal number
value           NN                              Noun, singular or mass
per             IN                              Preposition or subordinating conjunction
person          NN                              Noun, singular or mass
per             IN                              Preposition or subordinating conjunction
day)            NN                              Noun, singular or mass

Step 4: Retaining only the Noun/Verbs we end up with gym, access, length, stay, value, person, day

ให้เพิ่ม n เพื่อเก็บบริบทเพิ่มเติมและลบ stopwords

ผลการค้นหาแบบ 2 กรัม:ห้องออกกำลังกายฟรี, สิทธิ์เข้ายิม, ระยะเวลาเข้าพัก, มูลค่าการพัก

Summary of step 1 through 4 of shallow NLP:

2-gram              Pos Tag
---------------------------
access two          NN CD
complimentary gym   NNP NN
gym access          NN NN
length stay         NN NN
per day             IN NN
per person          IN NN
person per          NN IN
stay value          NN NN
two length          CD NN
value per           NN IN

Step 5: Retaining only the Noun/Verb combination we end up with complimentary gym, gym access, length stay, stay value

ผลลัพธ์ 3 กรัม:การเข้าใช้ห้องออกกำลังกายฟรีมูลค่าการพักระยะยาวต่อคน

Summary of step 1 through 4 of shallow NLP:

3-gram                      Pos Tag
-------------------------------------
access two length           NN CD NN
complimentary gym access    NNP NN NN
gym access two              NN NN CD
length stay value           NN NN NN
per person per              IN NN IN
person per day              NN IN NN
stay value per              NN NN IN
two length stay             CD NN NN
value per person            NN IN NN


Step 5: Retaining only the Noun/Verb combination we end up with complimentary gym access, length stay value, person per day

สิ่งที่ต้องจำ:

  • อ้างถึงธนาคารต้นเพนน์เพื่อทำความเข้าใจคำอธิบายแท็ก PoS https://www.ling.upenn.edu/courses/Fall_2003/ling001/penn_treebank_pos.html
  • ขึ้นอยู่กับข้อมูลและบริบททางธุรกิจของคุณคุณสามารถเลือกค่า n เพื่อแยก n-g จากประโยค
  • การเพิ่มคำหยุดโดเมนเฉพาะจะเพิ่มคุณภาพของการแยกแนวคิด / ชุดรูปแบบ
  • เทคนิค Deep NLP จะให้ผลลัพธ์ที่ดีกว่าเช่นแทนที่จะเป็น n-gram ตรวจสอบความสัมพันธ์ภายในประโยคและเป็นตัวแทน / แสดงว่าเป็นการก่อสร้างที่ซับซ้อนเพื่อรักษาบริบท สำหรับข้อมูลเพิ่มเติมโปรดอ้างอิง/stats//a/133680/66708

เครื่องมือ

คุณสามารถพิจารณาใช้ OpenNLP / StanfordNLP เพื่อเป็นส่วนหนึ่งของการติดแท็กคำพูด ภาษาการเขียนโปรแกรมส่วนใหญ่มีห้องสมุดรองรับ OpenNLP / StanfordNLP คุณสามารถเลือกภาษาตามความสะดวกสบายของคุณ ด้านล่างนี้คือตัวอย่างรหัส R ที่ฉันใช้สำหรับการติดแท็ก PoS

ตัวอย่างรหัส R:

Sys.setenv(JAVA_HOME='C:\\Program Files\\Java\\jre7') # for 32-bit version
library(rJava)
require("openNLP")
require("NLP")

s <- paste("Complimentary gym access for two for the length of stay $12 value per person per day")

tagPOS <-  function(x, ...) {
  s <- as.String(x)
    word_token_annotator <- Maxent_Word_Token_Annotator()
    a2 <- Annotation(1L, "sentence", 1L, nchar(s))
    a2 <- annotate(s, word_token_annotator, a2)
    a3 <- annotate(s, Maxent_POS_Tag_Annotator(), a2)
    a3w <- a3[a3$type == "word"]
    POStags <- unlist(lapply(a3w$features, `[[`, "POS"))
    POStagged <- paste(sprintf("%s/%s", s[a3w], POStags), collapse = " ")
    list(POStagged = POStagged, POStags = POStags)
  }

  tagged_str <-  tagPOS(s)
  tagged_str

#$POStagged
#[1] "Complimentary/NNP gym/NN access/NN for/IN two/CD for/IN the/DT length/NN of/IN stay/NN $/$ 12/CD value/NN per/IN     person/NN per/IN day/NN"
#
#$POStags
#[1] "NNP" "NN"  "NN"  "IN"  "CD"  "IN"  "DT"  "NN"  "IN"  "NN"  "$"   "CD" 
#[13] "NN"  "IN"  "NN"  "IN"  "NN" 

อ่านเพิ่มเติมเกี่ยวกับ Shallow & Deep NLP:

  • การประมวลผล NLP แบบตื้นและลึกสำหรับการเรียนรู้ภววิทยา: ภาพรวมอย่างรวดเร็วคลิกที่นี่

  • การรวมตื้นและลึก NLP สำหรับการแยกข้อมูลคลิกที่นี่


คำตอบที่ดี (+1) เพียงหนึ่งข้อเสนอแนะ: ถ้าเป็นไปได้ให้จัดทำวรรณกรรมหรืออย่างน้อยอ้างอิงทั่วไปสำหรับเทคนิค NLP ตื้นที่คุณได้กล่าวถึง
Aleksandr Blekh

1
ขอบคุณมาก. สองคำถามฉันสามารถทำสิ่งนี้กับ nltk ได้หรือไม่ ฉันสามารถใช้ tf-idf เพื่อทำสิ่งเดียวกันได้หรือไม่แล้วใช้คำเฉพาะ (คะแนนสูงสุด) เป็นคำสำคัญของฉัน
William Falcon

@ Aleksandr Blekh ขอบคุณ ฉันได้เพิ่มลิงก์อ่านเพิ่มเติมเพื่อเรียนรู้เพิ่มเติมเกี่ยวกับ NLP ที่ตื้นและลึก หวังว่าสิ่งนี้จะช่วยได้
Manohar Swamynathan

@ William Falcon ขอบคุณ 1) ใช่คุณสามารถใช้ nltk 2) สามารถใช้ TF-IDF ได้อย่างแน่นอนหากคุณพยายามค้นหาแนวคิดหรือธีมที่ระดับเอกสาร
Manohar Swamynathan

3

คุณต้องวิเคราะห์โครงสร้างประโยคและแยกหมวดหมู่ประโยคที่น่าสนใจ (ในกรณีนี้ฉันคิดว่ามันจะเป็นคำนามซึ่งเป็นหมวดวลี ) สำหรับรายละเอียดโปรดดูบทความ Wikipedia ที่เกี่ยวข้องและบท"โครงสร้างการวิเคราะห์ประโยค"ของหนังสือ NLTK

เกี่ยวกับเครื่องมือซอฟต์แวร์ที่มีอยู่สำหรับการใช้วิธีการที่กล่าวถึงข้างต้นและอื่น ๆ ฉันขอแนะนำให้พิจารณาNLTK (ถ้าคุณชอบ Python) หรือซอฟต์แวร์ StanfordNLP (ถ้าคุณชอบ Java) สำหรับเฟรมเวิร์ก NLP อื่น ๆ มากมายไลบรารีและการเขียนโปรแกรมสนับสนุนภาษาต่าง ๆ ดูส่วนที่เกี่ยวข้อง (NLP) ในรายการ curated ที่ยอดเยี่ยมนี้


0

หากคุณเป็นผู้ใช้ R ที่มีเป็นจำนวนมากของข้อมูลที่เป็นประโยชน์ดีที่http://www.rdatamining.com ดูตัวอย่างการขุดข้อความของพวกเขา
ดูที่แพ็คเกจ tm ด้วย
นี่เป็นไซต์รวมที่ดี - http://www.tapor.ca/


ลิงก์ไม่ถือว่าเป็นคำตอบที่ถูกต้องในเว็บไซต์นี้ โปรดตอบคำถามต้นฉบับในโพสต์ของคุณและใช้ลิงก์เพื่อเสริมคำตอบของคุณ
sheldonkreger
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.