הטרנספורמרים משנים את עולם הבינה המלאכותית

מחבר:
בתאריך:

מודלים מסוג טרנספורמרים משנים את עולם הבינה המלאכותית ומגיעים להישגים על אנושיים במשימות של עיבוד שפה טבעית (NLP).

text summarization with the transformers library

קיימים כמה עשרות טרנספורמרים, מתוכם שניים בולטים במיוחד: GPT של OpenAI שמייצר טקסט ברמה חסרת תקדים, עונה על שאלות ומסכם טקסטים ו-BERT של גוגל שמשמש, בין היתר, לקידוד טקסט ואנליזת סנטימנט.

ספריית transformers מאפשרת לעבוד עם הטרנספורמרים השונים בממשק אחיד שנועד לשרת את חובבי Tensorflow כמו גם את מקצועני PyTorch. הספרייה מציעה שפע של אפשרויות, ומצאתי שהדרך הטובה ביותר להתחיל את ההיכרות עם הספרייה היא מדף תיאורי המקרה בכתובת: https://huggingface.co/transformers/usage.html . בין האפשרויות שהדף מדגים אפשר למצוא: סיווג טקסטים, תשובות לשאלות, מודלים של שפה, תרגום ויצירת טקסט.

במדריך זה אדגים סיכום ויצירה של טקסט.

נתקין את הספרייה:

!pip install transformers

 

סיכום טקסט

הדרך הפשוטה ביותר לסכם טקסט היא לעבוד עם פונקצית pipeline שנעביר לה את הפרמטר "summarization".

from transformers import pipeline
 
summarizer = pipeline("summarization")

הפונקציה משתמשת בטרנספומר Bart שהוא פיתוח של Bert.

נעביר לפונקציה את 4 הפסקאות הראשונות של מאמר בויקיפדיה על "רפסודיה בוהמית" של להקת קווין:

text_list = ["Bohemian Rhapsody is a song by the British rock band Queen. It was written by Freddie Mercury for the band's 1975 album A Night at the Opera. The song is a six-minute suite, notable for its lack of a refraining chorus and consisting of several sections: an intro, a ballad segment, an operatic passage, a hard rock part and a reflective coda. Bohemian Rhapsody is one of the few songs to emerge from the 1970s progressive rock movement to achieve widespread commercial success and appeal to a mainstream audience."]
 
ARTICLE = ' '.join(text_list)

ונדפיס את תוצאה:

print(summarizer(ARTICLE, max_length=130, min_length=30))
Bohemian Rhapsody was written by Freddie Mercury for the band's 1975 album A Night at the Opera . The song is a six-minute suite, notable for its lack of a refraining chorus and consisting of several sections . It is one of the few songs to emerge from the 1970s progressive rock movement to achieve widespread commercial success and appeal to a mainstream audience.

אנחנו לא חייבים להשתמש ב-Bart. נשתמש במודל T5 הנחשב לטוב ביותר לסיכום טקסט.

את המודלים השונים שמציעה הספרייה ניתן למצוא בדף https://huggingface.co/models

כדי להשתמש במודל אחר נגדיר מודל וטוקנייזר:

from transformers import AutoModelWithLMHead, AutoTokenizer

model = AutoModelWithLMHead.from_pretrained("t5-base")
tokenizer = AutoTokenizer.from_pretrained("t5-base")

נעשה טוקניזציה:

inputs = tokenizer.encode("summarize: " + ARTICLE, return_tensors="tf", max_length=512)
  • המודל מוגבל ל- 512 טוקנים לכל היותר.
  • אנחנו מצפים לטוקנים בתצוגת טנסור של Tensorflow (ולא PyTorch).

נריץ את המודל:

outputs = model.generate(inputs, max_length=150, min_length=40, length_penalty=2.0, num_beams=4, early_stopping=True)
  • הגדרנו את אורך הסיכום.
  • יתר הפרמטרים מגבילים את אפשרויות החיפוש.

נמיר את תוצא המודל מטוקנים למילים:

summary = tokenizer.decode(outputs[0], skip_special_tokens=True)

נדפיס את התוצאה:

print(summary)
bohemian Rhapsody is a song by the British rock band queen. it was written by Freddie Mercury for the band's 1975 album a night at the opera. the song is considered one of the greatest rock songs of all time.

קצר ולעניין.

 

יצירת טקסט

ביצירת טקסט אנחנו מצפים מהמחשב להשלים את הטקסט שאנחנו מספקים לו. המודל הטוב בתחום הוא GPT-2 שבו משתמשת הספרייה עבור פונקצית ה-pipeline.

כל מה שצריך הוא 3 שורות של קוד, ולהעביר לפונקציה את הפרמטר "text-generation":

passage = "Bohemian Rhapsody is a song by the British rock band Queen. It was written by Freddie Mercury for the band's 1975 album A Night at the Opera. The song is a six-minute suite, notable for its lack of a refraining chorus and consisting of several sections: an intro, a ballad segment, an operatic passage, a hard rock part and a reflective coda. Bohemian Rhapsody is one of the few songs to emerge from the 1970s progressive rock movement to achieve widespread commercial success and appeal to a mainstream audience."

text_generator = pipeline("text-generation")

print(text_generator(passage, max_length=200))

התוצאה:

Pianist and composer Steve Stokoe is known for his pioneering work with piano players, particularly the piano virtuoso Michael Lonergan, who played the bass with pianist James Blake in 1972, and his solo work with electric piano player Tom Watson in 1979.\n\nThe work of C. W. White was published as a pamphlet in 1982. White's work on C. W. White

אפשר גם להשתמש במודל אחר או לשנות את הפרמטרים כדי לקבל תוצאות שונות.

ניצור מודל וטוקנייזר:

from transformers import TFAutoModelWithLMHead, AutoTokenizer

model = TFAutoModelWithLMHead.from_pretrained("gpt2")
tokenizer = AutoTokenizer.from_pretrained("gpt2")
  • אני משתמש ב-GPT-2 שמייצר כותרות בעיתונות העולם אבל אפשר לבחור מודל אחר שמתמחה ביצירת טקסטים דוגמת: XLNet.

נהפוך את הפסקה לטוקנים:

inputs = tokenizer.encode(passage, add_special_tokens=False, return_tensors="tf")

נריץ את המודל:

outputs = model.generate(inputs, max_length=250, do_sample=True, temperature=0.7, top_p=0.8, top_k=50)

הפרמטרים:

  • do_sample - כדי לנסות למנוע מהמודל לחזור על עצמו.
  • temperature - ערכים נמוכים מ-1 בשביל תוצאות שמרניות.
  • הפרמטרים הנוספים מגבילים את מספר האפשרויות וסבירותם.

נמיר את הטוקנים שמייצר המודל למילים:

generated = tokenizer.decode(outputs[0])

והתוצאה:

print(generated)
The title song is the opening track from Queen's 1973 album The Road to Hell. The song is a five-minute suite with two parts that are a breakaway from the rest of the song. The song is sung by a young woman named Margaret, who is a member of the band and a member of Queen's 1977 album The Road to Hell. The song is written by the band's guitarist, Alan Bennett. The song is recorded by the band's producer, David J. Taylor. The song is the first and only song recorded for Queen in the band's lifetime.

The title track is the second and only song recorded for Queen in the band's lifetime

כותבת מחדש את ההיסטוריה של עולם המוזיקה.

אם אתה רוצה לסכם טקסטים ארוכים אז כדאי שתקרא את המדריך סיכום מאמר ויקיפדיה באמצעות המודל המתקדם בעולם T5 של גוגל.

 

גם זה יעניין אותך

מערכת שאלות-תשובות מבוססת בינה מלאכותית

לכל המדריכים בנושא של למידת מכונה

 

אהבתם? לא אהבתם? דרגו!

0 הצבעות, ממוצע 0 מתוך 5 כוכבים

 

 

הוסף תגובה חדשה

 

= 3 + 5