File size: 4,159 Bytes
3c32de9 3fc2ce9 3c32de9 e416868 3c32de9 e416868 3c32de9 3fc2ce9 3c32de9 2c526e8 3c32de9 2c526e8 3c32de9 0376d10 3c32de9 0376d10 3c32de9 0376d10 3c32de9 0376d10 3c32de9 0376d10 5187bce 3c32de9 ebe2b18 3c32de9 ebe2b18 3c32de9 5187bce 8d643c6 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 |
from transformers import AutoTokenizer, AutoModel
import torch
import torch.nn.functional as F
def mean_pooling(model_output, attention_mask):
token_embeddings = model_output[
0
]
input_mask_expanded = (
attention_mask.unsqueeze(-1).expand(token_embeddings.size()).float()
)
return torch.sum(token_embeddings * input_mask_expanded, 1) / torch.clamp(
input_mask_expanded.sum(1), min=1e-9
)
def cosine_similarity(u, v):
return F.cosine_similarity(u, v, dim=1)
def compare(text1, text2):
sentences = [text1, text2]
tokenizer = AutoTokenizer.from_pretrained("dmlls/all-mpnet-base-v2-negation")
model = AutoModel.from_pretrained("dmlls/all-mpnet-base-v2-negation")
encoded_input = tokenizer(
sentences, padding=True, truncation=True, return_tensors="pt"
)
with torch.no_grad():
model_output = model(**encoded_input)
sentence_embeddings = mean_pooling(model_output, encoded_input["attention_mask"])
sentence_embeddings = F.normalize(sentence_embeddings, p=2, dim=1)
similarity_score = cosine_similarity(
sentence_embeddings[0].unsqueeze(0), sentence_embeddings[1].unsqueeze(0)
)
return similarity_score.item()
#--------------------------------------------------------------------------------------------------------------------
from fastapi import FastAPI
app = FastAPI()
@app.get("/")
def greet_json():
return {"Hello": "World!"}
#--------------------------------------------------------------------------------------------------------------------
from transformers import pipeline
summarizer = pipeline("summarization", model="facebook/bart-large-cnn")
def Summerized_Text(text):
text = text.strip()
a = summarizer(text, max_length=130, min_length=30, do_sample=False)
print(a)
return a[0]['summary_text']
#--------------------------------------------------------------------------------------------------------------------
from fastapi.responses import JSONResponse
from pydantic import BaseModel
from fastapi import FastAPI
class StrRequest(BaseModel):
text: str
class CompareRequest(BaseModel):
summary: str
text: str
@app.get("/api/check")
def check_connection():
try:
return JSONResponse(
{"status": 200, "message": "Message Successfully Sent"}, status_code=200
)
except Exception as e:
print("Error => ", e)
return JSONResponse({"status": 500, "message": str(e)}, status_code=500)
@app.post("/api/summerized")
async def get_summerized(request: StrRequest):
try:
print(request)
text = request.text
if not text:
return JSONResponse(
{"status": 422, "message": "Invalid Input"}, status_code=422
)
summary = Summerized_Text(text)
if "No abstract text." in summary:
return JSONResponse(
{"status": 500, "message": "No matching text found", "data": "None"}
)
if not summary:
return JSONResponse(
{"status": 500, "message": "No matching text found", "data": {}}
)
return JSONResponse(
{"status": 200, "message": "Matching text found", "data": summary}
)
except Exception as e:
print("Error => ", e)
return JSONResponse({"status": 500, "message": str(e)}, status_code=500)
@app.post("/api/compare")
def compareTexts(request: CompareRequest):
try:
text = request.text
summary = request.summary
if not summary or not text:
return JSONResponse(
{"status": 422, "message": "Invalid Input"}, status_code=422
)
value = compare(text, summary)
return JSONResponse(
{
"status": 200,
"message": "Comparisons made",
"value": value,
"text": text,
"summary": summary,
}
)
except Exception as e:
print("Error => ", e)
return JSONResponse({"status": 500, "message": str(e)}, status_code=500)
|