File size: 3,723 Bytes
7f39d1d
 
7caa0c4
 
7f39d1d
aba8919
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
---
license: mit
language:
- en
---

 # SkimLit: NLP Model for Medical Abstracts
 SkimLit is a natural language processing (NLP) project aimed at making the reading of medical abstracts more accessible. This project replicates the methodology outlined in the paper "PubMed 200K RCT: a Dataset for Sequenctial Sentence Classification in Medical Abstracts," using TensorFlow and various deep learning techniques.

# Project Overview

# **`Section 1`**

## Data Collection
- The PubMed 200K RCT dataset is obtained from the author's GitHub repository using the following commands:
```
git clone https://github.com/Franck-Dernoncourt/pubmed-rct
cd pubmed-rct/PubMed_20k_RCT_numbers_replaced_with_at_sign
```

## Data Prepocessing
- Sentences are extracted from the dataset, and numeric labels are assigned for machine learning models.
- Three baseline models are established to set the foundation for more complex models.

## Baseline Model (Model 0)
- TF-IDF Multinomial Naive Bayes Classifier is implemented.
- Classification evaluation metrics such as accuracy, precision, recall, and F1-score are employed.

## Deep Sequence Models
### Model 1: Conv1D with Token Embeddings
- Custom TextVectorizer and text embedding layers are created.
- Data is optimized for efficiency using TensorFlow tf.data API.

### Model 2: Pretrained Token Embeddings
- Universal Sentence Encoder (USE) from TensorFlow Hub is used for feature extraction.

### Model 3: Conv1D with Character Embeddings
- Character-level tokenizer and embedding are implemented.
- Conv1D model is constructed using character embeddings.

### Model 4: Hybrid Embedding Layer
- Token and character-level embeddings are combined using layers.Concatenate.
- A model is developed to process both types of embeddings and output label probabilities.

### Model 5: Transfer Learning with Positional Embeddings
- Positional embeddings are introduced to enhance the model's understanding of the sequence.
- A tribrid embedding model is created, combining token, character, line_number, and total_lines features.

## Model Evaluation and Comparison
- Models are evaluated on various datasets to compare their performance.

## Save and Load Models
- Models are saved and loaded for future use.

## Model Loading and Evaluation
- Pre-trained models are loaded and evaluated on validation datasets.

## Test Dataset Processing and Prediction
- A test dataset is created, preprocessed, and used for making predictions with the loaded model.

## Enriching Test Dataframe with Predictions
- Predictions and additional columns are added to the test dataframe for analysis.

## Finding Top Wrong Predictions
- The top 100 most inaccurately predicted samples are identified.

## Investigating Top Wrong Predictions
- Detailed information on the top 10 wrong predictions is displayed.

# **`Section 2`**
## Example Abstracts
- Example abstracts are downloaded from a GitHub repository.

## Processing Example Abstracts with spaCy
- spaCy is used to parse sentences from example abstracts.

## One-Hot Encoding and Prediction on Example Abstracts
- Line numbers and total lines are one-hot encoded, and predictions are made using the loaded model.

## Visualizing Predictions on Example Abstracts
- Predicted sequence labels for each line in the abstract are displayed.

# Conclusion
- SkimLit provides a comprehensive exploration of NLP techniques for medical abstracts, from baseline models to sophisticated deep learning architectures. The models are evaluated, compared, and applied to real-world examples, offering insights into their strengths and limitations.

- Feel free to explore the code, experiment with different models, and contribute to the advancement of Skimlit NLP.