Pencarian semantik untuk judul dan teks cerita
tldrstory adalah aplikasi pencarian semantik untuk judul dan konten teks yang terkait dengan cerita. tldrsstory menerapkan pelabelan zero-shot pada teks, yang memungkinkan pengkategorian konten secara dinamis. Kerangka kerja ini juga membangun indeks txtai yang memungkinkan pencarian kesamaan teks. Aplikasi Streamlit yang dapat disesuaikan dan layanan backend FastAPI memungkinkan pengguna meninjau dan menganalisis data yang diproses.
tldrstory memiliki artikel Medium terkait yang mencakup konsep dalam README ini dan banyak lagi. Coba lihat!
Tautan berikut adalah contoh aplikasi yang dibangun dengan tldrstory.
Cara termudah untuk menginstal adalah melalui pip dan PyPI
pip install tldrstory
Anda juga dapat menginstal tldrstory langsung dari GitHub. Disarankan menggunakan Lingkungan Virtual Python.
pip install git+https://github.com/neuml/tldrstory
Python 3.8+ didukung
Lihat tautan ini untuk membantu menyelesaikan masalah penginstalan khusus lingkungan.
Setelah diinstal, aplikasi harus dikonfigurasi untuk dijalankan. Aplikasi tldrsstory terdiri dari tiga proses terpisah:
Bagian ini akan menunjukkan cara memulai aplikasi "Berita Olahraga".
mkdir sports
wget https://raw.githubusercontent.com/neuml/tldrstory/master/apps/sports/app.yml -O sports/app.yml
wget https://raw.githubusercontent.com/neuml/tldrstory/master/apps/sports/api.yml -O sports/api.yml
wget https://raw.githubusercontent.com/neuml/tldrstory/master/apps/sports/index-simple.yml -O sports/index.yml
wget https://raw.githubusercontent.com/neuml/tldrstory/master/src/python/tldrstory/app.py -O sports/app.py
python -m tldrstory.index sports/index.yml
CONFIG=sports/api.yml API_CLASS=tldrstory.api.API uvicorn " txtai.api:app " &
streamlit run sports/app.py sports/app.yml " Sports " " ? "
Di luar kotak, tldrstory mendukung pembacaan data dari RSS dan API Reddit. Sumber data tambahan dapat ditentukan dan dikonfigurasi.
Berikut ini menunjukkan contoh definisi sumber data kustom. neuspo adalah acara olahraga dan aplikasi berita real-time. Sumber data ini memuat 4 entri yang telah ditentukan sebelumnya ke dalam database artikel.
from tldrstory . source . source import Source
class Neuspo ( Source ):
"""
Articles have the following schema:
uid - unique id
source - source name
date - article date
title - article title
url - reference url for data
entry - entry date
"""
def run ( self ):
# List of articles created
articles = []
articles . append ( self . article ( "0" , "Neuspo" , self . now (), "Eagles defeat the Giants 22 - 21" ,
"https://neuspo.com/stream/34952e3919d685982c17735018b0197f" , self . now ()))
articles . append ( self . article ( "1" , "Neuspo" , self . now (), "Giants lose to the Eagles 22 - 21" ,
"https://t.co/e9FFgo0wgR?amp=1" , self . now ()))
articles . append ( self . article ( "2" , "Neuspo" , self . now (), "Rays beat Dodgers 6 to 4" ,
"https://neuspo.com/stream/6cb820b3ebadc086aa36b5cc4a0f575d" , self . now ()))
articles . append ( self . article ( "3" , "Neuspo" , self . now (), "Dodgers drop Game 2, 6-4" ,
"https://t.co/1hEQAShVnP?amp=1" , self . now ()))
return articles
Mari kita jalankan kembali langkah di atas dengan menggunakan neuspo sebagai sumber datanya. Pertama-tama hapus direktori olahraga/data, untuk memastikan kami membuat database baru. Kami kemudian dapat mengunduh intisari di atas ke direktori olahraga.
# Delete the sports/data directory before running
wget https://gist.githubusercontent.com/davidmezzetti/9a6064d9a741acb89bd46eba9f906c26/raw/7058e97da82571005b2654b4ab908f25b9a04fe2/neuspo.py -O sports/neuspo.py
Edit sports/index.yml dan hapus bagian rss. Gantilah dengan yang berikut ini.
# Custom data source for neuspo
source : sports.neuspo.Neuspo
Sekarang jalankan kembali langkah 2–4 dari petunjuk di atas.
Bagian berikut menentukan parameter konfigurasi untuk setiap proses yang merupakan bagian dari aplikasi tldrstory.
Mengonfigurasi pengindeksan konten. Saat ini mendukung penarikan data melalui Reddit API, RSS, dan sumber khusus yang ditentukan pengguna.
name : string
Nama aplikasi
schedule : string
String bergaya cron yang memungkinkan pelaksanaan tugas pengindeksan terjadwal. Lihat tautan ini untuk informasi lebih lanjut tentang string cron.
Konfigurasi sumber data.
reddit.subreddit : name of subreddit to pull from
reddit.sort : sort type
reddit.time : time range
reddit.queries : list of text queries to run
Menjalankan serangkaian kueri Reddit API. Kunci API Reddit perlu dibuat dan dikonfigurasi agar metode ini dapat berfungsi. Parameter otentikasi dapat diatur dalam lingkungan atau dalam file praw.ini. Lihat tautan ini untuk informasi lebih lanjut tentang menyiapkan akun API Reddit, hanya akses baca saja yang diperlukan.
Lihat dokumentasi PRAW untuk detail selengkapnya tentang cara mengonfigurasi pengaturan kueri.
rss : list of RSS urls
Membaca serangkaian umpan RSS dan membuat artikel untuk setiap tautan artikel yang ditemukan.
source : string
Mengonfigurasi sumber khusus. Parameter ini mengambil jalur kelas lengkap sebagai string, misalnya "tldrstory.source.rss.RSS"
Sumber khusus dapat menggunakan data apa pun yang memiliki tanggal, string teks, dan url referensi. Lihat dokumentasi di source.py untuk informasi tentang cara membuat sumber kustom. rss.py dan reddit.py adalah contoh implementasi.
ignore : list of url patterns
Daftar pola url yang harus diabaikan. Mendukung string dan ekspresi reguler.
labels : dict
Konfigurasi label untuk pengklasifikasi zero-shot. Konfigurasi ini menetapkan kategori beserta daftar nilai topik.
Contoh:
labels :
topic :
values : [Label 1, Label 2]
Contoh di atas mengonfigurasi kategori "Topik" dengan dua kemungkinan label, "Label 1" dan "Label 2". Label apa pun dapat disetel di sini dan model NLP skala besar akan digunakan untuk mengkategorikan teks masukan ke dalam label tersebut.
path : string
Tempat menyimpan keluaran model, jalur akan dibuat jika belum ada.
embeddings : dict
Mengonfigurasi indeks txtai yang digunakan untuk mencari topik. Lihat konfigurasi txtai untuk detail selengkapnya tentang ini.
Mengonfigurasi antarmuka yang didukung FastAPI untuk menarik data yang diindeks.
path : string
Jalur menuju indeks model.
Aplikasi default didukung oleh Streamlit dan digerakkan oleh file konfigurasi YAML. File konfigurasi menetapkan nama aplikasi, titik akhir API untuk menarik konten, dan konfigurasi komponen. Aplikasi Streamlit khusus atau aplikasi lainnya dapat digunakan sebagai penggantinya untuk menarik konten dari titik akhir API secara langsung.
name : string
Nama aplikasi
api : url
Titik akhir API untuk menarik konten.
description : string
String penurunan harga yang digunakan untuk membuat deskripsi sidebar.
queries.name : Queries drop down header
queries.values : List of values to use for queries drop down
Mengonfigurasi kotak tarik-turun kueri. Ini harus berupa daftar kueri yang telah disimpan sebelumnya untuk digunakan. Jika ada nilai "Terbaru", maka N artikel terakhir akan dikueri. Jika ada nilai "--Search--", maka kotak teks lain akan ditampilkan untuk memungkinkan memasukkan kueri khusus.
filters : list
Daftar filter penggeser. Ini harus dipetakan ke label zero-shot yang dikonfigurasi di bagian pengindeksan.
chart.name : Chart name
chart.x : Chart x-axis column
chart.y : Chart y-axis column
chart.scale : Color scale for list of colors
chart.colors : List of colors
Mengizinkan konfigurasi plot sebar yang membuat grafik dua titik label. Bagan ini dapat digunakan untuk merencanakan dan menerapkan pewarnaan pada label yang diterapkan.
" column name " : dynamic range of coloring
Tabel data yang memperlihatkan detail hasil. Selain kolom default, bagian ini memungkinkan penambahan kolom tambahan berdasarkan label zero-shot yang diterapkan. Mode defaultnya adalah menampilkan nilai numerik label namun rentang label teks juga dapat diterapkan.
Misalnya:
Perintah di atas akan menampilkan teks "Label 1" berwarna merah untuk nilai antara 0 dan 5. Nilai antara 5 dan 10 akan menampilkan teks "Label 2" berwarna hijau.