การค้นหาความหมายสำหรับหัวข้อข่าวและข้อความเรื่องราว
tldrstory เป็นแอปพลิเคชั่นค้นหาความหมายสำหรับหัวข้อข่าวและเนื้อหาข้อความที่เกี่ยวข้องกับเรื่องราว tldrstory ใช้การติดป้ายกำกับแบบ Zero-shot บนข้อความ ซึ่งช่วยให้สามารถจัดหมวดหมู่เนื้อหาได้แบบไดนามิก กรอบงานนี้ยังสร้างดัชนี txtai ที่เปิดใช้งานการค้นหาความคล้ายคลึงกันของข้อความ แอปพลิเคชัน Streamlit ที่ปรับแต่งได้และบริการแบ็กเอนด์ FastAPI ช่วยให้ผู้ใช้สามารถตรวจสอบและวิเคราะห์ข้อมูลที่ประมวลผลได้
tldrstory มีบทความ Medium ที่เกี่ยวข้องซึ่งครอบคลุมแนวคิดใน README นี้และอื่นๆ อีกมากมาย ตรวจสอบออก!
ลิงก์ต่อไปนี้เป็นตัวอย่างแอปพลิเคชันที่สร้างด้วย tldrstory
วิธีติดตั้งที่ง่ายที่สุดคือผ่าน pip และ PyPI
pip install tldrstory
คุณยังสามารถติดตั้ง tldrstory ได้โดยตรงจาก GitHub แนะนำให้ใช้ Python Virtual Environment
pip install git+https://github.com/neuml/tldrstory
รองรับ Python 3.8+
ดูลิงก์นี้เพื่อช่วยแก้ไขปัญหาการติดตั้งเฉพาะสภาพแวดล้อม
เมื่อติดตั้งแล้ว จะต้องกำหนดค่าแอปพลิเคชันให้ทำงาน แอปพลิเคชัน tldrstory ประกอบด้วยกระบวนการแยกกันสามกระบวนการ:
ในส่วนนี้จะแสดงวิธีการเปิดแอปพลิเคชั่น “ข่าวกีฬา”
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 " " ? "
tldrstory รองรับการอ่านข้อมูลจาก RSS และ Reddit API เมื่อแกะกล่อง แหล่งข้อมูลเพิ่มเติมสามารถกำหนดและกำหนดค่าได้
ข้อมูลต่อไปนี้แสดงตัวอย่างคำจำกัดความของแหล่งข้อมูลที่กำหนดเอง neuspo เป็นแอปพลิเคชั่นข่าวและการแข่งขันกีฬาแบบเรียลไทม์ แหล่งข้อมูลนี้จะโหลดรายการที่กำหนดไว้ล่วงหน้า 4 รายการลงในฐานข้อมูลบทความ
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
มาทำตามขั้นตอนข้างต้นอีกครั้งโดยใช้ neuspo เป็นแหล่งข้อมูล ขั้นแรกให้ลบไดเร็กทอรีกีฬา/ข้อมูลเพื่อให้แน่ใจว่าเราสร้างฐานข้อมูลใหม่ จากนั้นเราสามารถดาวน์โหลดส่วนสำคัญด้านบนลงในไดเร็กทอรีกีฬาได้
# Delete the sports/data directory before running
wget https://gist.githubusercontent.com/davidmezzetti/9a6064d9a741acb89bd46eba9f906c26/raw/7058e97da82571005b2654b4ab908f25b9a04fe2/neuspo.py -O sports/neuspo.py
แก้ไข sports/index.yml และลบส่วน rss แทนที่ด้วยสิ่งต่อไปนี้
# Custom data source for neuspo
source : sports.neuspo.Neuspo
ตอนนี้ให้รันขั้นตอนที่ 2–4 อีกครั้งจากคำแนะนำด้านบน
ส่วนต่อไปนี้กำหนดพารามิเตอร์คอนฟิกูเรชันสำหรับแต่ละกระบวนการที่เป็นส่วนหนึ่งของแอปพลิเคชัน tldrstory
กำหนดค่าการจัดทำดัชนีเนื้อหา ปัจจุบันรองรับการดึงข้อมูลผ่าน Reddit API, RSS และแหล่งที่มาที่ผู้ใช้กำหนดเอง
name : string
ชื่อแอปพลิเคชัน
schedule : string
สตริงสไตล์ Cron ที่เปิดใช้งานการรันงานการจัดทำดัชนีตามกำหนดเวลา ดูลิงค์นี้สำหรับข้อมูลเพิ่มเติมเกี่ยวกับสตริง cron
การกำหนดค่าแหล่งข้อมูล
reddit.subreddit : name of subreddit to pull from
reddit.sort : sort type
reddit.time : time range
reddit.queries : list of text queries to run
รันชุดคำสั่ง Reddit API จะต้องสร้างและกำหนดค่าคีย์ Reddit API เพื่อให้วิธีนี้ใช้งานได้ พารามิเตอร์การตรวจสอบสิทธิ์สามารถตั้งค่าได้ภายในสภาพแวดล้อมหรือในไฟล์ praw.ini ดูลิงก์นี้สำหรับข้อมูลเพิ่มเติมเกี่ยวกับการตั้งค่าบัญชี Reddit API การเข้าถึงแบบอ่านอย่างเดียวคือทั้งหมดที่จำเป็น
ดูเอกสารประกอบ PRAW สำหรับรายละเอียดเพิ่มเติมเกี่ยวกับวิธีกำหนดการตั้งค่าคิวรี
rss : list of RSS urls
อ่านชุดฟีด RSS และสร้างบทความสำหรับแต่ละลิงก์บทความที่พบ
source : string
กำหนดค่าแหล่งที่มาที่กำหนดเอง พารามิเตอร์นี้รับพาธคลาสแบบเต็มเป็นสตริง เช่น "tldrstory.source.rss.RSS"
แหล่งที่มาที่กำหนดเองสามารถใช้ข้อมูลใดๆ ที่มีวันที่ สตริงข้อความ และ URL อ้างอิงได้ ดูเอกสารประกอบใน source.py สำหรับข้อมูลเกี่ยวกับวิธีการสร้างแหล่งที่มาที่กำหนดเอง rss.py และ reddit.py เป็นตัวอย่างการใช้งาน
ignore : list of url patterns
รายการรูปแบบ URL ที่จะละเว้น รองรับสตริงและนิพจน์ทั่วไป
labels : dict
การกำหนดค่าป้ายกำกับสำหรับตัวแยกประเภทแบบ Zero-shot การกำหนดค่านี้จะกำหนดหมวดหมู่พร้อมกับรายการค่าหัวข้อ
ตัวอย่าง:
labels :
topic :
values : [Label 1, Label 2]
ตัวอย่างข้างต้นกำหนดค่าหมวดหมู่ "หัวข้อ" ด้วยป้ายกำกับที่เป็นไปได้สองป้าย ได้แก่ "ป้ายกำกับ 1" และ "ป้ายกำกับ 2" คุณสามารถตั้งค่าป้ายกำกับใดก็ได้ที่นี่ และแบบจำลอง NLP ขนาดใหญ่จะถูกนำมาใช้เพื่อจัดหมวดหมู่ข้อความที่ป้อนลงในป้ายกำกับเหล่านั้น
path : string
ตำแหน่งที่จะจัดเก็บเอาต์พุตโมเดล เส้นทางจะถูกสร้างขึ้นหากไม่มีอยู่
embeddings : dict
กำหนดค่าดัชนี txtai ที่ใช้สำหรับการค้นหาหัวข้อ ดูการกำหนดค่า txtai สำหรับรายละเอียดเพิ่มเติมเกี่ยวกับเรื่องนี้
กำหนดค่าอินเทอร์เฟซที่สนับสนุน FastAPI สำหรับการดึงข้อมูลที่จัดทำดัชนี
path : string
เส้นทางไปยังดัชนีโมเดล
แอปพลิเคชันเริ่มต้นขับเคลื่อนโดย Streamlit และขับเคลื่อนโดยไฟล์การกำหนดค่า YAML ไฟล์การกำหนดค่าจะตั้งชื่อแอปพลิเคชัน ตำแหน่งข้อมูล API สำหรับการดึงเนื้อหา และการกำหนดค่าส่วนประกอบ สามารถใช้แอปพลิเคชัน Streamlit แบบกำหนดเองหรือแอปพลิเคชันอื่นแทนเพื่อดึงเนื้อหาจากตำแหน่งข้อมูล API ได้โดยตรง
name : string
ชื่อแอปพลิเคชัน
api : url
จุดสิ้นสุด API สำหรับการดึงเนื้อหา
description : string
สตริงมาร์กดาวน์ที่ใช้สร้างคำอธิบายแถบด้านข้าง
queries.name : Queries drop down header
queries.values : List of values to use for queries drop down
กำหนดค่ากล่องแบบหล่นลงแบบสอบถาม นี่ควรเป็นรายการคำค้นหาที่เตรียมไว้ล่วงหน้าที่จะใช้ หากมีค่า "ล่าสุด" ระบบจะค้นหา N บทความสุดท้าย หากมีค่าเป็น "--ค้นหา--" จะแสดงกล่องข้อความอื่นเพื่อให้สามารถป้อนข้อความค้นหาที่กำหนดเองได้
filters : list
รายการตัวกรองแถบเลื่อน สิ่งนี้ควรแมปกับป้ายกำกับ Zero-shot ที่กำหนดค่าไว้ในส่วนการจัดทำดัชนี
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
อนุญาตให้กำหนดค่าพล็อตกระจายที่สร้างกราฟจุดป้ายกำกับสองจุด แผนภูมินี้สามารถใช้เพื่อลงจุดและใช้การระบายสีกับป้ายกำกับที่ติดไว้
" column name " : dynamic range of coloring
ตารางข้อมูลที่แสดงรายละเอียดผลลัพธ์ นอกจากคอลัมน์เริ่มต้นแล้ว ส่วนนี้ยังอนุญาตให้เพิ่มคอลัมน์เพิ่มเติมตามป้ายกำกับ Zero-shot ที่ใช้ โหมดเริ่มต้นคือการแสดงค่าตัวเลขของป้ายกำกับ แต่สามารถใช้ช่วงของป้ายกำกับข้อความได้เช่นกัน
ตัวอย่างเช่น:
ด้านบนจะแสดงข้อความ "ป้ายกำกับ 1" เป็นสีแดงสำหรับค่าระหว่าง 0 ถึง 5 ค่าระหว่าง 5 ถึง 10 จะแสดงข้อความ "ป้ายกำกับ 2" เป็นสีเขียว