Podsumowywanie jest bardzo częstym zadaniem, które wielu programistów chciałoby zautomatyzować. Na przykład, czy nie byłoby miło automatycznie tworzyć podsumowanie każdego artykułu na blogu, który piszesz? Albo automatycznie streszczać dokumenty dla swoich pracowników? Istnieje mnóstwo dobrych aplikacji do tego celu.
Modele oparte na transformatorach, takie jak Bart Large CNN, ułatwiają streszczanie tekstu w Pythonie. Te modele uczenia maszynowego są łatwe w użyciu, ale trudne do skalowania. Zobaczmy, jak używać Bart Large CNN i jak zoptymalizować jego działanie.
Transformers to zaawansowany framework Pythona, który ostatnio umożliwił osiągnięcie bardzo zaawansowanych przypadków użycia w przetwarzaniu języka naturalnego, takich jak podsumowywanie tekstu.
Przed Transformerami i sieciami neuronowymi dostępnych było kilka opcji, ale żadna z nich nie była naprawdę satysfakcjonująca.
W ostatnich latach powstało wiele dobrych, wstępnie wytrenowanych modeli przetwarzania języka naturalnego, opartych na Transformerach, przeznaczonych do różnych zastosowań. Bart Large CNN został udostępniony przez Facebooka i daje doskonałe wyniki przy streszczaniu tekstów.
Oto jak wykorzystać Bart Large CNN w kodzie Pythona.
Najprostszym sposobem użycia Bart Large CNN jest pobranie go z repozytorium Hugging Face i użycie potoku streszczania tekstu z biblioteki Transformers:
from transformers import pipeline
summarizer = pipeline("summarization", model="facebook/bart-large-cnn")
article = """New York (CNN)When Liana Barrientos was 23 years old, she got married in Westchester County, New York.
A year later, she got married again in Westchester County, but to a different man and without divorcing her first husband.
Only 18 days after that marriage, she got hitched yet again. Then, Barrientos declared "I do" five more times, sometimes only within two weeks of each other.
In 2010, she married once more, this time in the Bronx. In an application for a marriage license, she stated it was her "first and only" marriage.
Barrientos, now 39, is facing two criminal counts of "offering a false instrument for filing in the first degree," referring to her false statements on the
2010 marriage license application, according to court documents.
Prosecutors said the marriages were part of an immigration scam.
On Friday, she pleaded not guilty at State Supreme Court in the Bronx, according to her attorney, Christopher Wright, who declined to comment further.
After leaving court, Barrientos was arrested and charged with theft of service and criminal trespass for allegedly sneaking into the New York subway through an emergency exit, said Detective
Annette Markowski, a police spokeswoman. In total, Barrientos has been married 10 times, with nine of her marriages occurring between 1999 and 2002.
All occurred either in Westchester County, Long Island, New Jersey or the Bronx. She is believed to still be married to four men, and at one time, she was married to eight men at once, prosecutors say.
Prosecutors said the immigration scam involved some of her husbands, who filed for permanent residence status shortly after the marriages.
Any divorces happened only after such filings were approved. It was unclear whether any of the men will be prosecuted.
The case was referred to the Bronx District Attorney\'s Office by Immigration and Customs Enforcement and the Department of Homeland Security\'s
Investigation Division. Seven of the men are from so-called "red-flagged" countries, including Egypt, Turkey, Georgia, Pakistan and Mali.
Her eighth husband, Rashid Rajput, was deported in 2006 to his native Pakistan after an investigation by the Joint Terrorism Task Force.
If convicted, Barrientos faces up to four years in prison. Her next court appearance is scheduled for May 18."""
summary = summarizer(article, max_length=130, min_length=30))
Wyjście:
Liana Barrientos, 39, is charged with two counts of "offering a false instrument for filing in the first degree" In total, she has been married 10 times, with nine of her marriages occurring between 1999 and 2002. She is believed to still be married to four men.
Jak widać, są to tylko 4 wiersze kodu Pythona, a jakość podsumowania jest bardzo dobra! Być może zauważyłeś jednak, że model jest duży, więc jego pobranie za pierwszym razem zajmuje trochę czasu.
Parametry min_length i max_length określają minimalny i maksymalny rozmiar streszczenia. Reprezentują one liczbę tokenów, a nie słów. Zasadniczo tokenem może być słowo, ale także znaki interpunkcyjne lub podsłowa. Ogólnie rzecz biorąc, można przyjąć, że 100 tokenów odpowiada mniej więcej 75 słowom.
Ważna uwaga: tekst wejściowy nie może być większy niż 1024 tokeny (mniej więcej tyle, co 800 słów), ponieważ jest to wewnętrzne ograniczenie tego modelu. Jeśli chcesz podsumować większe fragmenty tekstu, dobrą strategią jest podsumowanie kilku części tekstu niezależnie od siebie, a następnie ponowne połączenie wyników. Można nawet dokonywać podsumowań podsumowań!
Istnieją jednak dwa główne problemy związane z modelem Bart Large CNN.
Po pierwsze, podobnie jak wiele modeli głębokiego uczenia, wymaga on znacznej ilości miejsca na dysku i pamięci RAM (około 1,5 GB!). A i tak można go uznać za mały model uczenia głębokiego w porównaniu z ogromnymi modelami, takimi jak GPT-3, GPT-J, T5 11B itd.
Co ważniejsze, jest on dość powolny. Model ten w rzeczywistości generuje tekst pod maską, a generowanie tekstu jest z natury powolne. Jeśli próbujesz streścić fragment tekstu składający się z 800 słów, zajmie Ci to około 20 sekund na dobrym procesorze...
Rozwiązaniem jest wdrożenie dużej sieci CNN Barta na jednostce GPU. Przykładowo, na procesorze NVIDIA Tesla T4 możesz spodziewać się przyspieszenia x10, a Twój 800 wyrazowy tekst zostanie streszczony w około 2 sekundy.
Układy GPU są oczywiście bardzo drogie, więc to Ty musisz dokonać obliczeń i zdecydować, czy inwestycja jest tego warta!
Podsumowywanie tekstu za pomocą Bart Large CNN jest bardzo łatwe do zastosowania w prostym skrypcie, ale co zrobić, jeśli chcesz użyć go w produkcji dla dużej liczby zapytań?
Jak wspomniano powyżej, pierwszym rozwiązaniem byłoby zaopatrzenie się we własny sprzęt z układem GPU i popracowanie nad optymalizacjami produkcyjnymi, które przyspieszyłyby podsumowywanie.
Drugim rozwiązaniem jest zlecenie tego zadania specjalnej usłudze, takiej jak NLP Cloud, która za pomocą interfejsu API udostępni model Bart Large CNN. Przetestuj nasz punkt końcowy API podsumowania tutaj!
W roku 2022 możliwe jest przeprowadzenie zaawansowanego streszczania tekstu w Pythonie przy bardzo niewielkim wysiłku, dzięki transformatorom i Bart Large CNN.
Podsumowywanie tekstu jest bardzo użytecznym zadaniem, które coraz więcej firm automatyzuje w swoich aplikacjach. Jak widać, złożoność tego zadania wynika z jego wydajności. Istnieją pewne techniki pozwalające przyspieszyć streszczanie tekstu za pomocą Bart Large CNN, ale to temat na inny artykuł!
Mam nadzieję, że ten artykuł pomoże Ci zaoszczędzić czas przy następnym projekcie! Zapraszamy do wypróbowania funkcji streszczania tekstu w NLP Cloud!
Julien Salinas
CTO w NLP Cloud