Signed-off-by: András Schmelczer <andras@schmelczer.dev>
This commit is contained in:
Andras Schmelczer 2022-04-02 21:59:09 +02:00
parent acbdd96883
commit 1c501db81a
8 changed files with 16 additions and 11 deletions

View file

@ -1,8 +1,8 @@
import json
from good_ai import LargeFile, process_batch
from predict_domain import predict_domain
from good_ai import LargeFile, process_batch
if __name__ == "__main__":
with open("data/s2-corpus-1583.json") as f:

View file

@ -2,13 +2,14 @@ import re
from typing import Dict, Iterable, List
from config import model_key
from preprocess import preprocess
from models import DomainPrediction
from preprocess import preprocess
from sklearn.pipeline import Pipeline
from good_ai import use_model
from good_ai.utilities.clean import clean
@use_model(model_key, version="latest")
def predict_domain(
text: str, model: Pipeline, cut_off_probability: float = 0.2
@ -19,12 +20,11 @@ def predict_domain(
feature_names = model.named_steps["vectorizer"].get_feature_names_out()
token_mapping = {
preprocess(original): original
for original in text.split(" ")
}
token_mapping = {preprocess(original): original for original in text.split(" ")}
features = model.named_steps["vectorizer"].transform([" ".join(token_mapping.keys())])
features = model.named_steps["vectorizer"].transform(
[" ".join(token_mapping.keys())]
)
prediction = model.named_steps["classifier"].predict_proba(features)[0]
best_classes = sorted(enumerate(prediction), key=lambda v: v[1], reverse=True)

View file

@ -1,6 +1,5 @@
import re
from good_ai.utilities.clean import clean
from good_ai.utilities.lemmatize_text import lemmatize_text

View file

@ -119,7 +119,9 @@
" content = json.load(f)\n",
"\n",
" result = {\n",
" preprocess(clean(f'{c[\"title\"]} {c[\"abstract\"]}'), convert_to_ascii=True): c[\"domain\"]\n",
" preprocess(\n",
" clean(f'{c[\"title\"]} {c[\"abstract\"]}'), convert_to_ascii=True\n",
" ): c[\"domain\"]\n",
" for c in content\n",
" if (\n",
" c[\"domain\"]\n",
@ -242,7 +244,7 @@
"source": [
"classifier = Pipeline(\n",
" steps=[\n",
" (\"vectorizer\", TfidfVectorizer(min_df=10, max_df=0.1, token_pattern=r'[^ ]+')),\n",
" (\"vectorizer\", TfidfVectorizer(min_df=10, max_df=0.1, token_pattern=r\"[^ ]+\")),\n",
" (\"classifier\", ComplementNB(alpha=0.5, fit_prior=False)),\n",
" ],\n",
" verbose=1,\n",
@ -405,6 +407,7 @@
"source": [
"import logging\n",
"import sys\n",
"\n",
"logging.basicConfig(stream=sys.stdout, level=logging.INFO)\n",
"\n",
"save_model(classifier, key=model_key, keep_last_n=1)"

View file

@ -1,3 +1,3 @@
from .good_ai import *
from .utilities import *
from .open_s3 import *
from .utilities import *

View file

@ -2,6 +2,7 @@ import logging
from typing import Any, Optional
from joblib import load
from good_ai.open_s3 import LargeFile
logger = logging.getLogger("models")

View file

@ -3,6 +3,7 @@ from pathlib import Path
from typing import Optional, Union
from joblib import dump
from good_ai.open_s3 import LargeFile
logger = logging.getLogger("models")

View file

@ -3,6 +3,7 @@ from typing import Any, List, Optional, Union
from bs4 import BeautifulSoup
from bs4.element import NavigableString, Tag
from good_ai.utilities.publication_tei.models.element import Paragraph
from ..clean import clean