Connect with us

Big Data

Topic Modeling: Predicting Multiple Tags of Research Articles using OneVsRest strategy



OneVsRest Classifier  image

Recently I participated in an NLP hackathon — “Topic Modeling for Research Articles 2.0”. This hackathon was hosted by the Analytics Vidhya platform as a part of their HackLive initiative. The participants were guided by experts in a 2-hour live session and later on were given a week to compete and climb the leaderboard.

Problem Statement

Given the abstracts for a set of research articles, the task is to predict the tags for each article included in the test set.

train and test data for OneVsRest Classifier 

The research article abstracts are sourced from the following 4 topics — Computer Science, Mathematics, Physics, Statistics. Each article can possibly have multiple tags among 25 tags like Number Theory, Applications, Artificial Intelligence, Astrophysics of Galaxies, Information Theory, Materials Science, Machine Learning et al. Submissions are evaluated on micro F1 Score between the predicted and observed tags for each article in the test set.

sample submission for OneVsRest Classifier 

Complete Problem Statement and the dataset is available here.

Without further ado let’s get started with the code.

Loading and Exploring data

Importing necessary libraries —

%matplotlib inline
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
from nltk.tokenize import word_tokenize
from nltk.stem import PorterStemmer
from sklearn.feature_extraction.text import CountVectorizer
from sklearn.feature_extraction.text import TfidfVectorizer
from sklearn import metrics
from sklearn.metrics import accuracy_score
from sklearn.metrics import f1_score

Load train and test data from .csv files into Pandas DataFrame —

train_data = pd.read_csv(‘Train.csv’) test_data = pd.read_csv(‘Test.csv’)

Train and Test data shape —

print(“Train size:”, train_data.shape)
print(“Test size:”, test_data.shape)


train OneVsRest Classifier 

There are ~ 14k datapoints in the Train dataset and ~6k datapoints in the Test set. Overview of train and test datasets —


columns OneVsRest Classifier


test data for OneVsRest Classifier 

As we can see from the train data info, there are 31 columns — 1 column for id, 1 column for Abstract text, 4 columns for topics, these all form our feature variables, and the next 25 columns are class-labels that we have to ‘learn’ for the prediction task.

topic_cols = [‘Computer Science’, ‘Mathematics’, ‘Physics’, ‘Statistics’]
target_cols = [‘Analysis of PDEs’, ‘Applications’, ‘Artificial Intelligence’, ‘Astrophysics of Galaxies’, ‘Computation and Language’, ‘Computer Vision and Pattern Recognition’, ‘Cosmology and Nongalactic Astrophysics’, ‘Data Structures and Algorithms’, ‘Differential Geometry’, ‘Earth and Planetary Astrophysics’, ‘Fluid Dynamics’, ‘Information Theory’, ‘Instrumentation and Methods for Astrophysics’, ‘Machine Learning’, ‘Materials Science’, ‘Methodology’, ‘Number Theory’, ‘Optimization and Control’, ‘Representation Theory’, ‘Robotics’, ‘Social and Information Networks’, ‘Statistics Theory’, ‘Strongly Correlated Electrons’, ‘Superconductivity’, ‘Systems and Control’]

How many datapoints have more than 1 tags?

my_list = []
for i in range(train_data.shape[0]): my_list.append(sum(train_data.iloc[i, 6:]))


So, most of our research articles have either 1 or 2 tags.

Data cleaning and preprocessing for OneVsRest Classifier

Before proceeding with data cleaning and pre-processing, it’s a good idea to first print and observe some random samples from training data in order to get an overview. Based on my observation I built the below pipeline for cleaning and pre-processing the text data:

De-contraction → Removing special chars → Removing stopwords →Stemming

First, we define some helper functions needed for text processing.

De-contracting the English phrases —

def decontracted(phrase): #specific phrase = re.sub(r”won’t”, “will not”, phrase) phrase = re.sub(r”can’t”, “cannot”, phrase) # general phrase = re.sub(r”n’t”, “ not”, phrase) phrase = re.sub(r”’re”, “ are”, phrase) phrase = re.sub(r”’s”, “ is”, phrase) phrase = re.sub(r”’d”, “ would”, phrase) phrase = re.sub(r”’ll”, “ will”, phrase) phrase = re.sub(r”’t”, “ not”, phrase) phrase = re.sub(r”’ve”, “ have”, phrase) phrase = re.sub(r”’m”, “ am”, phrase) phrase = re.sub(r”’em”, “ them”, phrase) return phrase

Declare stopwords —
(I prefer my own custom set of stopwords to the in-built ones. It helps to me readily modify the stopwords set depending on the problem)

stopwords = [‘i’, ‘me’, ‘my’, ‘myself’, ‘we’, ‘our’, ‘ours’, ‘ourselves’, ‘you’, “you’re”, “you’ve”, “you’ll”, “you’d”, ‘your’, ‘yours’, ‘yourself’, ‘yourselves’, ‘he’, ‘him’, ‘his’, ‘himself’, ‘she’, “she’s”, ‘her’, ‘hers’, ‘herself’, ‘it’, “it’s”, ‘its’, ‘itself’, ‘they’, ‘them’, ‘their’, ‘theirs’, ‘themselves’, ‘what’, ‘which’, ‘who’, ‘whom’, ‘this’, ‘that’, “that’ll”, ‘these’, ‘those’, ‘am’, ‘is’, ‘are’, ‘was’, ‘were’, ‘be’, ‘been’, ‘being’, ‘have’, ‘has’, ‘had’, ‘having’, ‘do’, ‘does’, ‘did’, ‘doing’, ‘a’, ‘an’, ‘the’, ‘and’, ‘but’, ‘if’, ‘or’, ‘because’, ‘as’, ‘until’, ‘while’, ‘of’, ‘at’, ‘by’, ‘for’, ‘with’, ‘about’, ‘against’, ‘between’, ‘into’, ‘through’, ‘during’, ‘before’, ‘after’, ‘above’, ‘below’, ‘to’, ‘from’, ‘up’, ‘down’, ‘in’, ‘out’, ‘on’, ‘off’, ‘over’, ‘under’, ‘again’, ‘further’, ‘then’, ‘once’, ‘here’, ‘there’, ‘when’, ‘where’, ‘why’, ‘how’, ‘all’, ‘any’, ‘both’, ‘each’, ‘few’, ‘more’, ‘most’, ‘other’, ‘some’, ‘such’, ‘only’, ‘own’, ‘same’, ‘so’, ‘than’, ‘too’, ‘very’, ‘s’, ‘t’, ‘can’, ‘will’, ‘just’, ‘don’, “don’t”, ‘should’, “should’ve”, ‘now’, ‘d’, ‘ll’, ‘m’, ‘o’, ‘re’, ‘ve’, ‘y’, ‘ain’, ‘aren’, “aren’t”, ‘couldn’, “couldn’t”, ‘didn’, “didn’t”, ‘doesn’, “doesn’t”, ‘hadn’, “hadn’t”, ‘hasn’, “hasn’t”, ‘haven’, “haven’t”, ‘isn’, “isn’t”, ‘ma’, ‘mightn’, “mightn’t”, ‘mustn’, “mustn’t”, ‘needn’, “needn’t”, ‘shan’, “shan’t”, ‘shouldn’, “shouldn’t”, ‘wasn’, “wasn’t”, ‘weren’, “weren’t”, ‘won’, “won’t”, ‘wouldn’, “wouldn’t”]

Alternatively, you can directly import stopwords from word cloud API —

from wordcloud import WordCloud, STOPWORDS
stopwords = set(list(STOPWORDS))

Stemming using Porter stemmer —

def stemming(sentence): token_words = word_tokenize(sentence) stem_sentence = [] for word in token_words: stemmer = PorterStemmer() stem_sentence.append(stemmer.stem(word)) stem_sentence.append(“ “) return “”.join(stem_sentence)

Now that we’ve defined all the functions, let’s write a text pre-processing pipeline —

def text_preprocessing(text): preprocessed_abstract = [] for sentence in text: sent = decontracted(sentence) sent = re.sub(‘[^A-Za-z0–9]+’, ‘ ‘, sent) sent = ‘ ‘.join(e.lower() for e in sent.split() if e.lower() not in stopwords) sent = stemming(sent) preprocessed_abstract.append(sent.strip()) return preprocessed_abstract

Preprocessing the train data abstract text—

train_data[‘preprocessed_abstract’] = text_preprocessing(train_data[‘ABSTRACT’].values)
train_data[[‘ABSTRACT’, ‘preprocessed_abstract’]].head()


pre-processed data OneVsRest Classifier 

Likewise, preprocessing the test dataset –

test_data[‘preprocessed_abstract’] = text_preprocessing(test_data[‘ABSTRACT’].values)
test_data[[‘ABSTRACT’, ‘preprocessed_abstract’]].head()


Abstract OneVsRest Classifier 

Now we longer need the original ‘ABSTRACT’ column. You may drop this column from the datasets.

Text data encoding

Splitting train data into train and validation datasets —

X = train_data[[‘Computer Science’, ‘Mathematics’, ‘Physics’, ‘Statistics’, ‘preprocessed_abstract’]]
y = train_data[target_cols] from sklearn.model_selection import train_test_split
X_train, X_cv, y_train, y_cv = train_test_split(X, y, test_size = 0.25, random_state = 21)
print(X_train.shape, y_train.shape)
print(X_cv.shape, y_cv.shape)


text data encoding

As we can see, we have got ~ 10500 datapoints in our training set and ~3500 datapoints in the validation set.

TF-IDF vectorization of text data

Building vocabulary —

combined_vocab = list(train_data[‘preprocessed_abstract’]) + list(test_data[‘preprocessed_abstract’])

Yes, here I’ve knowingly committed a sin! I have used the complete train and test data for building vocabulary to train a model on it. Ideally, your model shouldn’t be seeing the test data.

vectorizer = TfidfVectorizer(min_df = 5, max_df = 0.5, sublinear_tf = True, ngram_range = (1, 1))
X_train_tfidf = vectorizer.transform(X_train[‘preprocessed_abstract’]) X_cv_tfidf = vectorizer.transform(X_cv[‘preprocessed_abstract’]) 
print(X_train_tfidf.shape, y_train.shape)
print(X_cv_tfidf.shape, y_cv.shape)


td-if output

After TF-IDF encoding we obtain 9136 features, each of them corresponding to a distinct word in the vocabulary.

Some important things you should know here —

  • I didn’t directly jump to a conclusion that I should go with TF-IDF vectorization. I tried different methods like BOW, W2V using a pre-trained GloVe model, etc. Among them, TF-IDF turned out to be the best performing so here I’m demonstrating only this.
  • It didn’t magically appear to me that I should be going with uni-grams. I tried bi-grams, tri-grams, and even four-grams; the model employing the unigrams gave the best performance among all.

Text data encoding is a tricky thing. Especially in competitions where even a difference of 0.001 in the performance metric can push you several places behind on the leaderboard. So, one should be open to trying different permutations & combinations at a rudimentary stage.

Before we proceed with modeling, we stack all the features(topic features + TF-IDF encoded text features) together for both train and test datasets respectively.

from scipy.sparse import hstack
X_train_data_tfidf = hstack((X_train[topic_cols], X_train_tfidf))
X_cv_data_tfidf = hstack((X_cv[topic_cols], X_cv_tfidf))

Multi-label classification using OneVsRest Classifier

Until now we were only dealing with refining and vectorizing the feature variables. As we know, this is a multi-label classification problem and each document may have one or more predefined tags simultaneously. We already saw that several datapoints have 2 or 3 tags.

Most traditional machine learning algorithms are developed for single-label classification problems. Therefore a lot of approaches in the literature transform the multi-label problem into multiple single-label problems so that the existing single-label algorithms can be used.

One such technique is One-vs-the-rest (OvR) multiclass/multilabel classifier, also known as one-vs-all. In OneVsRest Classifier, we fit one classifier per class and it is the most commonly used strategy for multiclass/multi-label classification and is a fair default choice. For each classifier, the class is fitted against all the other classes. In addition to its computational efficiency, one advantage of this approach is its interpretability. Since each class is represented by one and one classifier only, it is possible to gain knowledge about the class by inspecting its corresponding classifier.

Let’s search for the optimal hyper-parameter ‘C’ —
(‘C’ denotes inverse of regularization strength. Smaller values specify stronger regularization).

from sklearn.multiclass import OneVsRestClassifier
from sklearn.linear_model import LogisticRegression
C_range = [0.01, 0.1, 1, 10, 100] for i in C_range: clf = OneVsRestClassifier(LogisticRegression(C = i, solver = ‘sag’)), y_train) y_pred_train = clf.predict(X_train_data_tfidf) y_pred_cv = clf.predict(X_cv_data_tfidf) f1_score_train = f1_score(y_train, y_pred_train, average = ‘micro’) f1_score_cv = f1_score(y_cv, y_pred_cv, average = ‘micro’) print(“C:”, i, “Train Score:”,f1_score_train, “CV Score:”, f1_score_cv) print(“- “*50)


We can see that the highest validation score is obtained at C = 10. But the training score here is also very high, which was kind of expected.

Let’s tune the hyper-parameter even further —

from sklearn.multiclass import OneVsRestClassifier
from sklearn.linear_model import LogisticRegressionC_range = [10, 20, 40, 70, 100]
for i in C_range: clf = OneVsRestClassifier(LogisticRegression(C = i, solver = ‘sag’)), y_train) y_pred_train = clf.predict(X_train_data_tfidf) y_pred_cv = clf.predict(X_cv_data_tfidf) f1_score_train = f1_score(y_train, y_pred_train, average = ‘micro’) f1_score_cv = f1_score(y_cv, y_pred_cv, average = ‘micro’) print(“C:”, i, “Train Score:”,f1_score_train, “CV Score:”, f1_score_cv) print(“- “*50)


The model with C = 20 gives the best score on the validation set. So, going further, we take C = 20.

If you notice, here we have used the default L2 penalty for regularization as the model with L2 gave me the best result among L1, L2, and elastic-net mixing.

Determining the right thresholds for OneVsRest Classifier

The default threshold in binary classification algorithms is 0.5. But this may not be the best threshold given the data and the performance metrics that we intend to maximize. As we know, the F1 score is given by —

A good threshold(for each distinct label) would be the one that maximizes the F1 score.

def get_best_thresholds(true, pred): thresholds = [i/100 for i in range(100)] best_thresholds = [] for idx in range(25): f1_scores = [f1_score(true[:, idx], (pred[:, idx] > thresh) * 1) for thresh in thresholds] best_thresh = thresholds[np.argmax(f1_scores)] best_thresholds.append(best_thresh) return best_thresholds

In a nutshell, what the above function does is, for each of the 25 class labels, it computes the F1 scores corresponding to each of the hundred thresholds and then selects that threshold which returns the maximum F1 score for the given class label.

If the individual F1 score is high, the micro-average F1 will also be high. Let’s get the thresholds —

clf = OneVsRestClassifier(LogisticRegression(C = 20, solver = ‘sag’)), y_train)
y_pred_train_proba = clf.predict_proba(X_train_data_tfidf)
y_pred_cv_proba = clf.predict_proba(X_cv_data_tfidf)
best_thresholds = get_best_thresholds(y_cv.values, y_pred_cv_proba)


[0.45, 0.28, 0.19, 0.46, 0.24, 0.24, 0.24, 0.28, 0.22, 0.2, 0.22, 0.24, 0.24, 0.41, 0.32, 0.15, 0.21, 0.33, 0.33, 0.29, 0.16, 0.66, 0.33, 0.36, 0.4]

As you can see we have obtained a distinct threshold value for each class label. We’re going to use these same values in our final OneVsRest Classifier model. Making predictions using the above thresholds —

y_pred_cv = np.empty_like(y_pred_cv_proba)for i, thresh in enumerate(best_thresholds): y_pred_cv[:, i] = (y_pred_cv_proba[:, i] > thresh) * 1 print(f1_score(y_cv, y_pred_cv, average = ‘micro’))



Thus, we have managed to obtain a significantly better score using the variable thresholds.

So far we have performed hyper-parameter tuning on the validation set and managed to obtain the optimal hyperparameter (C = 20). Also, we tweaked the thresholds and obtained the right set of thresholds for which the F1 score is maximum.

Making a prediction on the test data using OneVsRest Classifier

Using the above parameters let’s move on to build train a full-fledged model on the entire training data and make a prediction on the test data.

# train and test data
X_tr = train_data[[‘Computer Science’, ‘Mathematics’, ‘Physics’, ‘Statistics’, ‘preprocessed_abstract’]]
y_tr = train_data[target_cols]
X_te = test_data[[‘Computer Science’, ‘Mathematics’, ‘Physics’, ‘Statistics’, ‘preprocessed_abstract’]] # text data encoding
X_tr_tfidf = vectorizer.transform(X_tr['preprocessed_abstract'])
X_te_tfidf = vectorizer.transform(X_te['preprocessed_abstract']) # stacking X_tr_data_tfidf = hstack((X_tr[topic_cols], X_tr_tfidf))
X_te_data_tfidf = hstack((X_te[topic_cols], X_te_tfidf)) # modeling and making prediction with best thresholds
clf = OneVsRestClassifier(LogisticRegression(C = 20)), y_tr)
y_pred_tr_proba = clf.predict_proba(X_tr_data_tfidf)
y_pred_te_proba = clf.predict_proba(X_te_data_tfidf)
y_pred_te = np.empty_like(y_pred_te_proba)
for i, thresh in enumerate(best_thresholds): y_pred_te[:, i] = (y_pred_te_proba[:, i] > thresh) * 1

Once we obtain our test predictions, we attach them to the respective ids (as in the sample submission file) and make a submission in the designated format.

ss = pd.read_csv(‘SampleSubmission.csv’)
ss[target_cols] = y_pred_te
ss.to_csv(‘LR_tfidf10k_L2_C20.csv’, index = False)

The best thing about participating in the hackathons is that you get to experiment with different techniques, so when you encounter similar kind of problem in the future you have a fair understanding of what works and what doesn’t. And also you get to learn a lot from other participants by actively participating in the discussions.

You can find the complete code here on my GitHub profile.

About the Author

Pratik Nabriya is a skilled Data Professional currently employed with an Analytics & AI firm based out of Noida. He is proficient in Machine learning, Deep learning, NLP, Time-Series Analysis, SQL, Data manipulation & Visualisation and is familiar with working in a Cloud environment. In his spare time, he loves to compete in Hackathons, and write blogs & articles at the crossroads of Data & Finance.

PlatoAi. Web3 Reimagined. Data Intelligence Amplified.
Click here to access.


Big Data

Proximity labeling: an enzymatic tool for spatial biology



In this Forum, we highlight how cutting-edge, proximity-dependent, enzymatic labeling tools, aided by sequencing technology developments, have enabled the extraction of spatial information of proteomes, transcriptomes, genome organization, and cellular networks. We also discuss the potential applications of proximity labeling in the unexplored field of spatial biology in live systems.

PlatoAi. Web3 Reimagined. Data Intelligence Amplified.
Click here to access.


Continue Reading

Big Data

Synthetic biology applications of the yeast mating signal pathway




Central carbon metabolism (CCM)

as the main source of energy, CCM oxidizes carbon through glycolysis, the pentose phosphate pathway, and the tricarboxylic acid cycle.


a cell host or an organism for the production of biochemicals such as enzymes by introducing synthetic modules or devices into the cell.


an assembly of biological parts that enables cells to perform logical functions, such as genetic switches, oscillators, and logic gates.

Convolutional neural network

a class of artificial neural networks with multiple building blocks that automatically and adaptively learn spatial hierarchies of features through back-propagation.

Clustered regularly interspaced short palindromic repeats (CRISPR)

a genome-editing tool in which CRISPR-associated nuclease 9 (Cas9)–guide RNA (gRNA) complexes recognize a protospacer adjacent motif through base-pairing and then cleave the target DNA,

CRISPR activation or interference (CRISPRa/i)

a tool that uses dead Cas protein and gRNA to activate or repress genes, resulting in gene upregulation or downregulation, respectively.

Cubic ternary complex model

an equilibrium model that describes the interactions between receptor and ligand. This model simulates the interactions of G proteins and receptors in both their active and inactive conformations.

G proteins

heterotrimeric G protein complexes are composed of α, β and γ subunits. Replacement of GDP by GTP in Gα causes a conformational change that dissociates the Gβγ subunits, leading to the activation of downstream signaling.

G protein-coupled receptor (GPCR)

a generic class of versatile, seven transmembrane-domain proteins that regulate a diverse array of intracellular signaling cascades in response to hormones, neurotransmitters, and other stimuli.


a cascade of molecular events that finally lead to fusion of the nuclei and the formation of diploid cells.

Metabolic engineering

a new scientific field that combines multi-gene recombination technology with metabolic regulation and biochemical engineering to overproduce desired products.

Mitogen-activated protein kinases (MAPKs)

a family of serine/threonine kinases that convert extracellular signals into a diverse range of cellular responses.


studies include genomics, transcriptomics, proteomics, and metabolomics that characterize and quantify pools of biological molecules, and together give rise to the field of integrative genetics.


a genetic circuit where oscillation is generated by the inhibition and activation of transcriptional/translational feedback loops.

Pheromone-response element (PRE)

a cis element that is present in multiple copies in the promoters of a variety of pheromone-responsive genes; PREs interact with Ste12 to initiate the transcription of pheromone-induced genes.

Quorum sensing

a cell density-dependent phenomenon in which cells adapt their behavior by synthesizing, secreting, perceiving, and reacting to small diffusible signaling molecules termed autoinducers.

Scaffold protein

proteins that recruit other proteins to form a functional unit, thus enhancing signaling efficiency and fidelity.


a Ste5 mutant that lacks the Gβγ-binding site because its N-terminus has been truncated; Ste5ΔN-CTM is no longer recruited to the plasma membrane following pheromone treatment.

PlatoAi. Web3 Reimagined. Data Intelligence Amplified.
Click here to access.


Continue Reading

Big Data

Biotechnology of functional proteins and peptides for hair cosmetic formulations



  • New cosmetic science.

    Elsevier, 1997

    • Bouillon C.
    • Wilkinson J.

    The science of hair care.

    CRC Press, 2005

    • Pierce J.S.
    • et al.

    Characterization of formaldehyde exposure resulting from the use of four professional hair straightening products.

    J. Occup. Environ. Hyg. 2011; 8: 686-699

    • Ahmed M.B.
    • et al.

    Neurotoxic effect of lead on rats: relationship to apoptosis.

    Int. J. Health Sci. (Qassim). 2013; 7: 192-199

    • Martins M.
    • et al.

    α-Chymotrypsin catalysed oligopeptide synthesis for hair modelling.

    J. Clean. Prod. 2019; 237117743

    • Tinoco A.
    • et al.

    Fusion proteins with chromogenic and keratin binding modules.

    Sci. Rep. 2019; 9: 14044

    • Cruz C.F.
    • et al.

    Peptide–protein interactions within human hair keratins.

    Int. J. Biol. Macromol. 2017; 101: 805-814

    • Sajna K.V.
    • et al.

    White biotechnology in cosmetics.

    in: Pandey A. Industrial biorefineries and white biotechnology. Elsevier, 2015: 607-652

  • Role of protein in cosmetics.

    Clin. Dermatol. 2008; 26: 321-325

  • Yoshioka, I. and Kamimura, Y. Seiwa Kasei Co. Ltd. Keratin hydrolyzate useful as hair fixatives, US4279996.

  • Fahnestock, S.R. and Schultz, T.M. EI Du Pont de Nemours and Company. Water-soluble silk proteins compositions for skin care, hair care or hair coloring, US7060260B2.

  • Detert, M. et al. Beiersdorf AG. Hair styling preparations with special protein hydrolysates, EP1878423A2.

    • Barba C.
    • et al.

    Restoring important hair properties with wool keratin proteins and peptides.

    Fibers Polym. 2010; 11: 1055-1061

    • Fernandes M.M.
    • et al.

    Keratin-based peptide: biological evaluation and strengthening properties on relaxed hair.

    Int. J. Cosmet. Sci. 2012; : 338-346

    • Ribeiro A.
    • et al.

    Potential of human γD-crystallin for hair damage repair: insights into the mechanical properties and biocompatibility.

    Int. J. Cosmet. Sci. 2013; 35: 458-466

  • Ross, V.M. Further preparations of silk proteins, seed oils, monosaccharide, natural botanicals and polysaccharide mixtures in compositions for hair care or hair repair, and skin care and topical treatments, US9023404B2.

    • Cruz C.F.
    • et al.

    Effect of a peptide in cosmetic formulations for hair volume control.

    Int. J. Cosmet. Sci. 2017; 39: 600-609

  • Edman, W.W. and Klemm, E.J. Shiseido Co. Ltd. Permanent waving compositions, US4798722.

  • Lang, G. et al. LOreal SA. Cosmetic temporary coloring compositions containing protein derivatives, US5192332.

  • Tomita, M. et al. Iwase Cosfa Co. Ltd, Morinaga Milk Industry Co. Ltd. Milk-protein hydrolyzates and compositions for use as hair and skin treating agent, US5314783.

  • Igarashi, S. et al. Kanebo Ltd. Hair coloring composition comprising anti-hair antibodies immobilized on coloring materials, and hair coloring methods, US5597386.

  • Oshika, M. and Naito, S. Kao Corp. Acylated silk proteins for hair care, US5747015.

  • Shah, S.M. Johnson and Johnson Consumer Inc. Heat-safe hair preparation and method of using same, US6156295.

  • Cannell, D. and Nguyen, N. LOreal SA. Composition for treating hair against chemical and photo damage, US6013250.

  • Schultz, T.M. and Tran, H.T. EI Du Pont de Nemours and Company. Modified soy proteins in personal care compositions, US2005/0008604A1.

    • Isnard M.D.
    • et al.

    Development of hair care formulations based on natural ingredients.

    Int. J. Phytocosmet. Nat. Ingred. 2019; 6: 9

    • Tinoco A.
    • et al.

    Keratin-based particles for protection and restoration of hair properties.

    Int. J. Cosmet. Sci. 2018; 40: 408-419

    • Tinoco A.
    • et al.

    Keratin:Zein particles as vehicles for fragrance release on hair.

    Ind. Crop. Prod. 2021; 159113067

    • Camargo Jr., F.B.
    • et al.

    Prevention of chemically induced hair damage by means of treatment based on proteins and polysaccharides.

    J. Cosmet. Dermatol. 2021; ()

    • Malinauskyte E.
    • et al.

    Penetration of different molecular weight hydrolysed keratins into hair fibres and their effects on the physical properties of textured hair.

    Int. J. Cosmet. Sci. 2021; 43: 26-37

    • Cavallaro G.
    • et al.

    Halloysite/keratin nanocomposite for human hair photoprotection coating.

    ACS Appl. Mater. Interfaces. 2020; 12: 24348-24362

    • Baus R.A.
    • et al.

    Strategies for improved hair binding: keratin fractions and the impact of cationic substructures.

    Int. J. Biol. Macromol. 2020; 160: 201-211

  • Cetintas, S. New hair botox material and the method to apply this material to hair, US2020/0197287A1.

    • Basit A.
    • et al.

    Health improvement of human hair and their reshaping using recombinant keratin K31.

    Biotechnol. Rep. 2018; 20e00288

    • Schulze Zur Wiesche E.
    • et al.

    Prevention of hair surface aging.

    J. Cosmet. Sci. 2011; 62: 237-249

    • Daithankar A.V.
    • et al.

    Moisturizing efficiency of silk protein hydrolysate: silk fibroin.

    Indian J. Biotechnol. 2005; 4: 115-121

    • Fernandes M.
    • Cavaco-Paulo A.

    Protein disulphide isomerase-mediated grafting of cysteine-containing peptides onto over-bleached hair.

    Biocatal. Biotransform. 2012; 30: 10-19

    • Tinoco A.
    • et al.

    Crystallin fusion proteins improve the thermal properties of hair.

    Front. Bioeng. Biotechnol. 2019; 7: 298

    • Wistow G.
    • et al.

    Myxococcus xanthus spore coat protein S may have a similar structure to vertebrate lens βγ-crystallins.

    Nature. 1985; 315: 771-773

  • Azizova, M. et al. Henkel IP and Holding GmbH. Hair treatment composition with naturally-derived peptide identical to human hair, US9505820B2.

    • Cruz C.F.
    • et al.

    Changing the shape of hair with keratin peptides.

    RSC Adv. 2017; 7: 51581-51592

  • Hawkins, G. et al. ELC Management LLC. Compositions and methods for permanent straightening of hair, US9011828B2.

  • Dimotakis, E. et al. LOreal SA. Hair cosmetic and styling compositions based on maleic acid copolymers and polyamines, US2013/0309190A1.

    • Song K.
    • et al.

    Effects of chemical structures of polycarboxylic acids on molecular and performance manipulation of hair keratin Kaili.

    RSC Adv. 2016; 6: 58594-58603

    • Qin X.
    • et al.

    Enzyme-triggered hydrogelation via self-assembly of alternating peptides.

    Chem. Commun. (Camb.). 2013; 49: 4839-4841

    • Yazawa K.
    • Numata K.

    Recent advances in chemoenzymatic peptide syntheses.

    Molecules. 2014; 19: 13755-13774

  • Savaides, A. and Tasker, R. Zotos International Inc. Formulations and methods for straightening and revitalizing hair, US2014/0261518A1.

  • Anthony, M.M. Copomon Enterprises LLC, Keratin Holdings LLC. Method of preparing a hair treatment formulation comprising nanoparticles in solution and method of hair treatment utilizing a treatment formulation comprising nanoparticles in solution, US9078818B1.

  • Chahal, S.P. et al. Croda International PLC. Protein-acrylate copolymer and hair conditioning product comprising said polymer, US9421159B2.

  • Huang, X. et al. EI Du Pont de Nemours and Company. Peptide-based conditioners and colorants for hair, skin and nails, US7220405B2.

  • Slusarewiez, P. Unilever Home and Personal Care USA. Method of coloring hair, US6773462B2.

  • Benson, R.E. et al. EI Du Pont de Nemours and Company, Affinergy LLC. Hair binding peptides and peptide-based hair reagents for personal care, US8273337B2.

  • Chung, Y.J. et al. Peptide exhibiting hair growth promoting activity and/or melanin production promoting activity and use thereof, US10344061B2.

  • Vickers, E.R. Clinical Stem Cells Pty Ltd. Peptides for hair growth, US2019/0091494A1.

    • Günay K.A.
    • et al.

    Selective peptide-mediated enhanced deposition of polymer fragrance delivery systems on human hair.

    ACS Appl. Mater. Interfaces. 2017; 9: 24238-24249

    • Bolduc C.
    • Shapiro J.

    Hair care products: waving, straightening, conditioning, and coloring.

    Clin. Dermatol. 2001; 19: 431-436

    • Dias M.F.R.G.

    Hair cosmetics: an overview.

    Int. J. Trichol. 2015; 7: 2

    • Barba C.
    • et al.

    Effect of wool keratin proteins and peptides on hair water sorption kinetics.

    J. Therm. Anal. Calorim. 2010; 102: 43-48

    • Villa A.L.V.
    • et al.

    Feather keratin hydrolysates obtained from microbial keratinases: effect on hair fiber.

    BMC Biotechnol. 2013; 13: 15

    • Mancon S.
    • et al.

    Hair conditioning effect of vegetable native protein in shampoo formulations.

    Seifen Ole Fette Wachse J. 2012; 138: 38-42

    • Wang S.
    • et al.

    Modification of wheat gluten for improvement of binding capacity with keratin in hair.

    R. Soc. Open Sci. 2018; 5171216

  • Sahib, S. and Jungman, E. Aquis Hairsciences Inc. Composition for improving hair health, US2020/0069551A1.

    • Antunes E.
    • et al.

    The effects of solvent composition on the affinity of a peptide towards hair keratin: experimental and molecular dynamics data.

    RSC Adv. 2015; 5: 12365-12371

  • Hair: its structure and response to cosmetic preparations.

    Clin. Dermatol. 1996; 14: 105-112

    • Cruz C.
    • et al.

    Human hair and the impact of cosmetic procedures: a review on cleansing and shape-modulating cosmetics.

    Cosmetics. 2016; 3: 26

    • Robbins C.R.

    Chemical composition of different hair types.

    in: Chemical and physical behavior of human hair. Springer, 2012: 105-176

    • Antunes E.
    • et al.

    Insights on the mechanical behavior of keratin fibrils.

    Int. J. Biol. Macromol. 2016; 89: 477-483

    • Kutlubay Z.
    • Serdaroglu S.

    Anatomy and physiology of hair.

    in: Hair and scalp disorders. IntechOpen, 2017: 13-27

    • Harrison S.
    • Sinclair R.

    Hair colouring, permanent styling and hair structure.

    J. Cosmet. Dermatol. 2004; 2: 180-185

    • Draelos Z.D.

    Hair care: an illustrated dermatologic handbook.

    CRC Press, 2004

    • Takada K.
    • et al.

    Influence of oxidative and/or reductive treatment on human hair (I): analysis of hair-damage after oxidative and/or reductive treatment.

    J. Oleo Sci. 2003; 52: 541-548

    • Kuzuhara A.

    Analysis of structural changes in bleached keratin fibers (black and white human hair) using Raman spectroscopy.

    Biopolymers. 2006; 81: 506-514

    • Wolfram L.J.
    • et al.

    The mechanism of hair bleaching.

    J. Soc. Cosmet. Chem. 1970; 900: 875-900

    • Bagiyan G.A.
    • et al.

    Oxidation of thiol compounds by molecular oxygen in aqueous solutions.

    Russ. Chem. Bull. 2003; 52: 1135-1141

    • Blasi-Romero A.
    • et al.

    In vitro investigation of thiol-functionalized cellulose nanofibrils as a chronic wound environment modulator.

    Polymers (Basel). 2021; 13: 249

  • PlatoAi. Web3 Reimagined. Data Intelligence Amplified.
    Click here to access.


    Continue Reading

    Big Data

    VW’s 9-month electric vehicle deliveries to China more than triple



    FRANKFURT (Reuters) – Volkswagen’s deliveries of battery-powered electric vehicles to China more than tripled in the first nine months of the year, the carmaker said on Friday, less than two months after it flagged the need to change its e-car strategy there.

    Deliveries of battery electric vehicles (BEV) to the world’s largest car market stood at 47,200 in the January-September period, up from 15,700 in the same period last year.

    “As planned, we significantly accelerated the BEV market ramp-up in China in the third quarter, and we are on track to meet our target for the year of delivering 80,000 to 100,000 vehicles of the ID. model family,” Christian Dahlheim, head of group sales, said.

    Volkswagen Chief Executive Herbert Diess in July said the carmaker had to change its approach to how it markets its BEVs in China after first-half deliveries stood at just 18,285.

    (Reporting by Christoph Steitz; Editing by Maria Sheahan)

    Image Credit: Reuters

    PlatoAi. Web3 Reimagined. Data Intelligence Amplified.
    Click here to access.


    Continue Reading
    Automotive4 days ago

    Evans and TOYOTA GAZOO Racing Seal Second in Spain

    Automotive4 days ago

    This Toyota Mirai 1:10 Scale RC Car Actually Runs On Hydrogen

    Fintech4 days ago

    PNC cuts nearly 600 apps for BBVA conversion

    Automotive1 day ago

    7 Secrets That Automakers Wish You Don’t Know

    Blockchain10 hours ago

    People’s payment attitude: Why cash Remains the most Common Means of Payment & How Technology and Crypto have more Advantages as a Means of payment

    Blockchain1 day ago

    What Is the Best Crypto IRA for Me? Use These 6 Pieces of Criteria to Find Out More

    Aviation5 days ago

    Vaccine passports for overseas travel to be rolled out this week

    Cyber Security4 days ago

    Spotify Web Player

    Gaming1 day ago

    New Steam Games You Might Have Missed In August 2021

    IOT1 day ago

    The Benefits of Using IoT SIM Card Technology

    Blockchain1 day ago

    The Most Profitable Cryptocurrencies on the Market

    Esports4 days ago

    New World team share details of upcoming server transfers in Q&A

    Gaming1 day ago

    How do casinos without an account work?

    Esports5 days ago

    New World Animal Instincts Quest Details

    Startups10 hours ago

    The 12 TikTok facts you should know

    Esports4 days ago

    How TFT Set 6 Hextech Augments work: full list and updates

    Energy4 days ago

    Segunda Conferência Ministerial de Energia da Rota e Cinturão é realizada em Qingdao

    Blockchain1 day ago

    What does swapping crypto mean?

    Gaming1 day ago

    Norway will crack down on the unlicensed iGaming market with a new gaming law

    Payments4 days ago

    Everyone is building a wallet