1234567891011121314151617181920212223242526272829303132333435363738394041 |
- import re
- from django.conf import settings
- from .models import Staff
- nlp = settings.MODEL
- STOP_WORDS = ['signature', 'care', 'emergency', 'er', 'center', 'nurse', 'dr', 'dr.', 'signaturecare', 'tech',
- 'doc', 'urgent', 'the', 'nures', 'nurses', 'registration']
- def clean_text(text):
- # replace some letter in text for getting better performance
- text = re.sub(r':\s*', ' ', text)
- text = re.sub(r'&', ', ', text)
- text = re.sub(r'/', ', ', text)
- text = re.sub(r'\.*\n\.*', '.', text)
- text = re.sub(r'[dD][rR](\.|\s*)*', 'Dr. ', text)
- return text
- def cleaning_name(names):
- cleaned_names = []
- for name in names:
- for n in name.split():
- cleaned_names.append(n) if len(n) > 2 and n.lower() not in STOP_WORDS else None
- return cleaned_names
- def extract_names(text):
- text = clean_text(text)
- doc = nlp(text)
- names = {ent.text for ent in doc.ents if ent.label_ in ['PERSON', 'ORG']}
- names = list(names)
- cleaned_names = cleaning_name(names)
- return cleaned_names
- def add_point_to_staff_profile(review):
- staffs = Staff.objects.all()
- names = extract_names(review.comment)
- point_unit = 1/len(names)
- # TODO: store points to the staff profile
|