File size: 3,095 Bytes
e15d562
 
096f402
 
 
c9a45c3
7002223
096f402
 
7002223
ec8d5b3
c9a45c3
 
 
ec8d5b3
096f402
 
 
 
 
ec8d5b3
7002223
ec8d5b3
 
c9a45c3
 
 
 
096f402
 
ec8d5b3
c9a45c3
 
 
 
 
 
 
 
 
 
 
7002223
 
c9a45c3
 
7002223
c9a45c3
 
 
ec8d5b3
c9a45c3
 
 
ec8d5b3
096f402
c9a45c3
096f402
ec8d5b3
7002223
c9a45c3
7002223
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
c9a45c3
 
db8b3aa
c9a45c3
 
 
ec8d5b3
096f402
 
ec8d5b3
f37b1cc
c9a45c3
7002223
c9a45c3
 
096f402
7002223
c9a45c3
a0e69bf
7002223
 
 
 
 
 
ec8d5b3
c9a45c3
 
 
 
 
7002223
e15d562
c9a45c3
 
096f402
53797fc
7002223
096f402
ec8d5b3
c0bd797
7002223
c9a45c3
7002223
c9a45c3
 
 
7002223
e15d562
096f402
 
 
ec8d5b3
c9a45c3
7002223
c9a45c3
 
 
 
 
 
096f402
7002223
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
import streamlit as st

from components.upload import upload_section
from components.summaries import summary_section
from components.insights import insights_section

from src.chat import chat_section
from src.topic_modeling import lda_topic_modeling
from src.visualizations import generate_wordcloud


# =====================================================
# PAGE CONFIGURATION
# =====================================================

st.set_page_config(
    page_title="LitReviewAI",
    page_icon="πŸ“š",
    layout="wide"
)

st.title("πŸ“š LitReviewAI: AI-Powered Research Literature Assistant")


# =====================================================
# SESSION STATE
# =====================================================

if "papers" not in st.session_state:
    st.session_state.papers = []

if "collections" not in st.session_state:
    st.session_state.collections = {}


# =====================================================
# TABS
# =====================================================

tabs = st.tabs(
    [
        "ℹ️ About",
        "πŸ“€ Upload",
        "πŸ’¬ Chat",
        "πŸ“‘ Summaries",
        "πŸ“Š Topic Modeling",
        "⚑ Insights"
    ]
)


# =====================================================
# ABOUT
# =====================================================

with tabs[0]:

    st.header("About LitReviewAI")

    st.markdown(
        """
### LitReviewAI

LitReviewAI is an AI-powered research assistant designed to help researchers analyze, summarize, and explore scientific literature.

### Features

- πŸ“„ Automatic PDF parsing
- 🧠 AI-powered paper analysis
- πŸ” Research gap identification
- ⚠️ Limitation extraction
- πŸ”‘ Keyword extraction
- πŸ“Š Topic modeling (LDA)
- 🌐 Co-author collaboration network
- πŸ’¬ Chat with uploaded research papers (RAG)
- πŸ“š BibTeX export
"""
    )


# =====================================================
# UPLOAD
# =====================================================

with tabs[1]:
    upload_section()


# =====================================================
# CHAT
# =====================================================

with tabs[2]:
    chat_section()


# =====================================================
# SUMMARIES
# =====================================================

with tabs[3]:
    summary_section()


# =====================================================
# TOPIC MODELING
# =====================================================

with tabs[4]:

    st.header("πŸ“Š Topic Modeling")

    if st.session_state.papers:

        topics = lda_topic_modeling(
            st.session_state.papers
        )

        if not topics.empty:
            st.dataframe(
                topics,
                use_container_width=True
            )

        st.subheader("☁️ Word Cloud")

        generate_wordcloud(
            st.session_state.papers
        )

    else:
        st.info("Upload papers first.")


# =====================================================
# INSIGHTS
# =====================================================

with tabs[5]:
    insights_section()