Merge pull request 'bug-fix' (#14) from bug-fix into develop
Reviewed-on: Berufsschule/Veracity_AI#14
This commit is contained in:
commit
caa005c93e
|
@ -155,7 +155,7 @@ cython_debug/
|
||||||
|
|
||||||
#ML
|
#ML
|
||||||
VeraMind-Mini/
|
VeraMind-Mini/
|
||||||
Token.txt
|
Token.py
|
||||||
|
|
||||||
# OS generated files #
|
# OS generated files #
|
||||||
######################
|
######################
|
||||||
|
|
|
@ -1,14 +1,10 @@
|
||||||
from langchain_community.llms import Ollama
|
from langchain_community.llms import Ollama
|
||||||
|
from Ai.Token import get_token
|
||||||
|
|
||||||
class ArticleRater:
|
class ArticleRater:
|
||||||
def __init__(self):
|
def __init__(self):
|
||||||
self.client = "https://ai.fabelous.app/v1/ollama/generic"
|
self.client = "https://ai.fabelous.app/v1/ollama/generic"
|
||||||
self.headers = self._load_token("Token.txt")
|
self.headers = {"Authorization": f"Token {get_token()}"}
|
||||||
|
|
||||||
def _load_token(self, token_path):
|
|
||||||
with open(token_path, "r") as f:
|
|
||||||
token = f.read().strip()
|
|
||||||
return {"Authorization": f"Token {token}"}
|
|
||||||
|
|
||||||
def get_response(self, article, result, confidence):
|
def get_response(self, article, result, confidence):
|
||||||
ollama_params = {
|
ollama_params = {
|
||||||
|
|
|
@ -8,8 +8,8 @@ from models.provider import Provider
|
||||||
from collections import Counter
|
from collections import Counter
|
||||||
from Ai.llm import ArticleRater
|
from Ai.llm import ArticleRater
|
||||||
|
|
||||||
BAD_WORDS = ["FAKE", "SATIRE", "Fake", "fake"]
|
BAD_WORDS = ["FAKE", "SATIRE", "Fake", "fake", "fake news", "Fake News", "FakeNews"]
|
||||||
GOOD_WORDS = ["REAL", "real", "Real"]
|
GOOD_WORDS = ["REAL", "real ", "Real", "Reale News", "reale", "reale News", "realen", "Real News"]
|
||||||
BAD_COLOR = "#ff8080"
|
BAD_COLOR = "#ff8080"
|
||||||
GOOD_COLOR = "#80ff8f"
|
GOOD_COLOR = "#80ff8f"
|
||||||
WORDS = BAD_WORDS + GOOD_WORDS
|
WORDS = BAD_WORDS + GOOD_WORDS
|
||||||
|
@ -43,12 +43,13 @@ class MainFrameController:
|
||||||
text_data.url = self.frame.entry_url.get()
|
text_data.url = self.frame.entry_url.get()
|
||||||
if not text_data.text_from_url():
|
if not text_data.text_from_url():
|
||||||
text_data.text = self.frame.input_textbox.get("0.0", "end")
|
text_data.text = self.frame.input_textbox.get("0.0", "end")
|
||||||
|
text_data.provider = "Unknown"
|
||||||
return text_data
|
return text_data
|
||||||
|
|
||||||
def press_check_button(self):
|
def press_check_button(self):
|
||||||
text_data = self.get_text_data()
|
text_data = self.get_text_data()
|
||||||
print(text_data.text)
|
text_data = self._predict(text_data)
|
||||||
self._predict(text_data)
|
self._add_to_db(text_data)
|
||||||
self.frame.output_textbox.configure(state="normal")
|
self.frame.output_textbox.configure(state="normal")
|
||||||
self.frame.output_textbox.delete("0.0", "end")
|
self.frame.output_textbox.delete("0.0", "end")
|
||||||
|
|
||||||
|
@ -67,24 +68,24 @@ class MainFrameController:
|
||||||
|
|
||||||
# Process highlighting when buffer is full
|
# Process highlighting when buffer is full
|
||||||
if len(highlight_buffer) == 5:
|
if len(highlight_buffer) == 5:
|
||||||
self.process_highlighting(highlight_buffer)
|
self._process_highlighting(highlight_buffer)
|
||||||
|
|
||||||
# Process any remaining chunks in the buffer
|
# Process any remaining chunks in the buffer
|
||||||
if highlight_buffer:
|
if highlight_buffer:
|
||||||
self.process_highlighting(highlight_buffer)
|
self._process_highlighting(highlight_buffer)
|
||||||
|
|
||||||
self.frame.output_textbox.configure(state="disabled")
|
self.frame.output_textbox.configure(state="disabled")
|
||||||
self.update_provider_list()
|
self.update_provider_list()
|
||||||
|
|
||||||
def process_highlighting(self, highlight_buffer):
|
def _process_highlighting(self, highlight_buffer):
|
||||||
start_index = self.frame.output_textbox.index(f"end-{sum(len(c) for c in highlight_buffer)}c")
|
start_index = self.frame.output_textbox.index(f"end-{sum(len(c) for c in highlight_buffer)}c")
|
||||||
end_index = self.frame.output_textbox.index("end")
|
end_index = self.frame.output_textbox.index("end")
|
||||||
self.highlight_words(start_index, end_index)
|
self._highlight_words(start_index, end_index)
|
||||||
|
|
||||||
# Keep overlap of 2 chunks
|
# Keep overlap of 2 chunks
|
||||||
highlight_buffer = deque(list(highlight_buffer)[-2:], maxlen=5)
|
highlight_buffer = deque(list(highlight_buffer)[-3:], maxlen=5)
|
||||||
|
|
||||||
def highlight_words(self, start_index, end_index):
|
def _highlight_words(self, start_index, end_index):
|
||||||
content = self.frame.output_textbox.get(start_index, end_index)
|
content = self.frame.output_textbox.get(start_index, end_index)
|
||||||
|
|
||||||
for word in WORDS:
|
for word in WORDS:
|
||||||
|
@ -123,7 +124,7 @@ class MainFrameController:
|
||||||
:param text_data: TextData object containing the analyzed information
|
:param text_data: TextData object containing the analyzed information
|
||||||
"""
|
"""
|
||||||
|
|
||||||
self.db.insert_data(url=text_data.url, anbieter=text_data.get_provider(),is_fake_news= text_data.is_fake_news)
|
self.db.insert_data(url=text_data.url, anbieter=text_data.get_provider(), is_fake_news= text_data.is_fake_news)
|
||||||
|
|
||||||
def _fetch_db_data(self):
|
def _fetch_db_data(self):
|
||||||
self.text_data_list = []
|
self.text_data_list = []
|
||||||
|
@ -146,14 +147,18 @@ class MainFrameController:
|
||||||
# Zähle die Häufigkeit jedes Providers
|
# Zähle die Häufigkeit jedes Providers
|
||||||
provider_counts = Counter(text_data.provider for text_data in text_data_list if text_data.provider)
|
provider_counts = Counter(text_data.provider for text_data in text_data_list if text_data.provider)
|
||||||
|
|
||||||
# Erstelle und sortiere die Provider-Liste
|
# Erstelle die Provider-Liste
|
||||||
sorted_providers = [
|
providers = [
|
||||||
Provider(name, count, provider_groups.get(name, []))
|
Provider(name, count, provider_groups.get(name, []))
|
||||||
for name, count in sorted(provider_counts.items(), key=lambda x: x[1], reverse=True)
|
for name, count in provider_counts.items()
|
||||||
]
|
]
|
||||||
|
|
||||||
|
# Sortiere die Provider-Liste nach dem Fake-Prozentsatz (absteigend)
|
||||||
|
sorted_providers = sorted(providers, key=lambda x: x.get_fake_percentage(), reverse=True)
|
||||||
|
|
||||||
return sorted_providers
|
return sorted_providers
|
||||||
|
|
||||||
|
|
||||||
def update_provider_list(self):
|
def update_provider_list(self):
|
||||||
self._fetch_db_data()
|
self._fetch_db_data()
|
||||||
# Lösche vorhandene Einträge in der scrollbaren Ansicht
|
# Lösche vorhandene Einträge in der scrollbaren Ansicht
|
||||||
|
|
|
@ -21,7 +21,7 @@ class TextData:
|
||||||
def text_from_url(self)-> bool:
|
def text_from_url(self)-> bool:
|
||||||
if not self.url:
|
if not self.url:
|
||||||
print("No url")
|
print("No url")
|
||||||
return True
|
return False
|
||||||
|
|
||||||
if not self.text:
|
if not self.text:
|
||||||
print("Extrahiere Text von URL...")
|
print("Extrahiere Text von URL...")
|
||||||
|
@ -29,7 +29,7 @@ class TextData:
|
||||||
self._extractor.fetch_content()
|
self._extractor.fetch_content()
|
||||||
self._extractor.extract_text()
|
self._extractor.extract_text()
|
||||||
self.text = self._extractor.get_text()
|
self.text = self._extractor.get_text()
|
||||||
return False
|
return True
|
||||||
|
|
||||||
def get_output(self):
|
def get_output(self):
|
||||||
|
|
||||||
|
@ -50,10 +50,10 @@ class TextData:
|
||||||
:return: The extracted domain or None if the URL is invalid
|
:return: The extracted domain or None if the URL is invalid
|
||||||
"""
|
"""
|
||||||
if not self._is_valid_url(self.url):
|
if not self._is_valid_url(self.url):
|
||||||
self.provider = "None"
|
self.provider = "Unknown"
|
||||||
parsed_url = urlparse(self.url)
|
parsed_url = urlparse(self.url)
|
||||||
domain_parts = parsed_url.netloc.split('.')
|
domain_parts = parsed_url.netloc.split('.')
|
||||||
self.provider = f"{domain_parts[-2]}.{domain_parts[-1]}" if len(domain_parts) >= 2 else "None"
|
self.provider = f"{domain_parts[-2]}.{domain_parts[-1]}" if len(domain_parts) >= 2 else "Unknown"
|
||||||
|
|
||||||
def _is_valid_url(self, url: str) -> bool:
|
def _is_valid_url(self, url: str) -> bool:
|
||||||
"""
|
"""
|
||||||
|
|
Loading…
Reference in New Issue