Science Score: 18.0%
This score indicates how likely this project is to be science-related based on various indicators:
-
✓CITATION.cff file
Found CITATION.cff file -
○codemeta.json file
-
○.zenodo.json file
-
○DOI references
-
○Academic publication links
-
○Academic email domains
-
○Institutional organization owner
-
○JOSS paper metadata
-
○Scientific vocabulary similarity
Low similarity (7.9%) to scientific vocabulary
Last synced: 10 months ago
·
JSON representation
·
Repository
Basic Info
- Host: GitHub
- Owner: RajatJacob
- Language: Python
- Default Branch: main
- Size: 76.7 MB
Statistics
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
- Releases: 0
Created over 2 years ago
· Last pushed over 2 years ago
Metadata Files
Readme
Citation
README.md

CiteSync
CiteSync is a reference management tool designed to streamline the citation process for researchers. Using Natural Language Processing, it automates the identification and citation of relevant papers, eliminating the need for manual tracking. By reducing the mechanical work and ensuring accurate citations, CiteSync enhances efficiency.
Usage
- Go to the CiteSync website and upload your research material.
- Clone this repository
- Navigate into the CiteSync folder.
- Install dependencies
npm install. - Run the server
npm start. Microsoft Word should open now with the add-in loaded. - Add your own research content.
- Highlight the text you want to cite and press the
Citebutton. The citation should get added inline and added to the bibliography section below.
Contributors
Demonstration Video
Owner
- Name: Rajat Jacob
- Login: RajatJacob
- Kind: user
- Location: Bangalore, India
- Company: @delve-ai-org
- Website: https://delve.ai
- Twitter: rajatjacob_
- Repositories: 1
- Profile: https://github.com/RajatJacob
Citation (citation.py)
# import the required libraries
from langchain.vectorstores.chroma import Chroma
from langchain_community.embeddings import OpenAIEmbeddings
from main import get_paper_details
CHROMA_PATH = "chroma"
PROMPT_TEMPLATE = """
Here is some information:
{context}
---------
Answer the question based on the above: {question}
"""
with open("OPENAI_API_KEY.txt", "r") as f:
OPENAI_API_KEY = f.read().strip()
embedding_function = OpenAIEmbeddings(openai_api_key=OPENAI_API_KEY)
db = Chroma(persist_directory=CHROMA_PATH,
embedding_function=embedding_function)
class CitationNotFound(BaseException):
pass
def get_paper_details_from_path(file_path) -> dict:
paper = get_paper_details(file_path=file_path)
if paper is None:
raise CitationNotFound
publisher_node = paper.publisher.single()
publisher = None if publisher_node is None else publisher_node.name
author_names = [
{
'given_name': author_node.given_name,
'family_name': author_node.family_name
}
for author_node in paper.authors
]
return {
'title': paper.title,
'doi': paper.doi,
'publisher': publisher,
'year': paper.year,
'month': paper.month,
'authors': author_names,
'subject': paper.subject
}
def get_citation_from_path(file_path: str) -> str:
details = get_paper_details_from_path(file_path=file_path)
authors = ', '.join([
' '.join(
filter(bool, [
author.get('given_name'),
author.get('family_name')
])
) for author in details.get('authors', [])])
return '. '.join([
authors, details['title'], details['subject'], str(
details['year']), details['doi']
])
def get_source_paper(query_text: str) -> str:
results = db.similarity_search_with_relevance_scores(query_text, k=2)
if len(results) == 0 or results[0][1] < 0.7:
raise CitationNotFound
source = results[0][0].metadata['source']
return source
def get_ama_citation(query_text) -> str:
source = get_source_paper(query_text=query_text)
return get_citation_from_path(source)
GitHub Events
Total
Last Year
Dependencies
Dockerfile
docker
- python 3.10 build
CiteSync/package-lock.json
npm
- 1129 dependencies
CiteSync/package.json
npm
- @babel/core ^7.13.10 development
- @babel/preset-env ^7.12.11 development
- @types/office-js ^1.0.256 development
- @types/office-runtime ^1.0.23 development
- acorn ^8.5.0 development
- babel-loader ^8.2.2 development
- copy-webpack-plugin ^9.0.1 development
- eslint-plugin-office-addins ^2.1.5 development
- file-loader ^6.2.0 development
- html-loader ^4.1.0 development
- html-webpack-plugin ^5.5.0 development
- office-addin-cli ^1.5.5 development
- office-addin-debugging ^5.0.12 development
- office-addin-dev-certs ^1.11.3 development
- office-addin-lint ^2.2.5 development
- office-addin-manifest ^1.12.3 development
- office-addin-prettier-config ^1.2.0 development
- os-browserify ^0.3.0 development
- process ^0.11.10 development
- source-map-loader ^3.0.0 development
- webpack ^5.76.3 development
- webpack-cli ^5.0.1 development
- webpack-dev-server 4.13.1 development
- core-js ^3.9.1
- regenerator-runtime ^0.13.7
requirements.in
pypi
- Flask *
- PyMuPDF *
- PyPDF2 *
- chromadb *
- flask-cors *
- langchain *
- langchain-openai *
- mypy *
- neomodel *
- openai *
- pandas *
- pdfminer *
- pydantic *
- requests *
- unstructured *
requirements.txt
pypi
- aiohttp ==3.9.3
- aiosignal ==1.3.1
- annotated-types ==0.6.0
- antlr4-python3-runtime ==4.9.3
- anyio ==4.3.0
- asgiref ==3.7.2
- attrs ==23.2.0
- backoff ==2.2.1
- bcrypt ==4.1.2
- beautifulsoup4 ==4.12.3
- blinker ==1.7.0
- build ==1.0.3
- cachetools ==5.3.2
- certifi ==2024.2.2
- cffi ==1.16.0
- chardet ==5.2.0
- charset-normalizer ==3.3.2
- chroma-hnswlib ==0.7.3
- chromadb ==0.4.22
- click ==8.1.7
- coloredlogs ==15.0.1
- contourpy ==1.2.0
- cryptography ==42.0.3
- cycler ==0.12.1
- dataclasses-json ==0.6.4
- dataclasses-json-speakeasy ==0.5.11
- deprecated ==1.2.14
- distro ==1.9.0
- effdet ==0.4.1
- emoji ==2.10.1
- fastapi ==0.109.2
- filelock ==3.13.1
- filetype ==1.2.0
- flask ==3.0.2
- flask-cors ==4.0.0
- flatbuffers ==23.5.26
- fonttools ==4.49.0
- frozenlist ==1.4.1
- fsspec ==2024.2.0
- google-auth ==2.28.0
- googleapis-common-protos ==1.62.0
- grpcio ==1.60.1
- h11 ==0.14.0
- httpcore ==1.0.3
- httptools ==0.6.1
- httpx ==0.26.0
- huggingface-hub ==0.20.3
- humanfriendly ==10.0
- idna ==3.6
- importlib-metadata ==6.11.0
- importlib-resources ==6.1.1
- iopath ==0.1.10
- itsdangerous ==2.1.2
- jinja2 ==3.1.3
- joblib ==1.3.2
- jsonpatch ==1.33
- jsonpath-python ==1.0.6
- jsonpointer ==2.4
- kiwisolver ==1.4.5
- kubernetes ==29.0.0
- langchain ==0.1.8
- langchain-community ==0.0.21
- langchain-core ==0.1.24
- langchain-openai ==0.0.6
- langdetect ==1.0.9
- langsmith ==0.1.3
- layoutparser ==0.3.4
- lxml ==5.1.0
- markupsafe ==2.1.5
- marshmallow ==3.20.2
- matplotlib ==3.8.3
- mmh3 ==4.1.0
- monotonic ==1.6
- mpmath ==1.3.0
- multidict ==6.0.5
- mypy ==1.8.0
- mypy-extensions ==1.0.0
- neo4j ==5.15.0
- neomodel ==5.2.1
- networkx ==3.2.1
- nltk ==3.8.1
- numpy ==1.26.4
- oauthlib ==3.2.2
- omegaconf ==2.3.0
- onnx ==1.15.0
- onnxruntime ==1.15.1
- openai ==1.12.0
- opencv-python ==4.9.0.80
- opentelemetry-api ==1.22.0
- opentelemetry-exporter-otlp-proto-common ==1.22.0
- opentelemetry-exporter-otlp-proto-grpc ==1.22.0
- opentelemetry-instrumentation ==0.43b0
- opentelemetry-instrumentation-asgi ==0.43b0
- opentelemetry-instrumentation-fastapi ==0.43b0
- opentelemetry-proto ==1.22.0
- opentelemetry-sdk ==1.22.0
- opentelemetry-semantic-conventions ==0.43b0
- opentelemetry-util-http ==0.43b0
- overrides ==7.7.0
- packaging ==23.2
- pandas ==2.2.0
- pdf2image ==1.17.0
- pdfminer ==20191125
- pdfminer-six ==20231228
- pdfplumber ==0.5.3
- pikepdf ==8.13.0
- pillow ==10.2.0
- pillow-heif ==0.15.0
- portalocker ==2.8.2
- posthog ==3.4.2
- protobuf ==4.25.3
- pulsar-client ==3.4.0
- pyasn1 ==0.5.1
- pyasn1-modules ==0.3.0
- pycocotools ==2.0.7
- pycparser ==2.21
- pycrypto ==2.6.1
- pycryptodome ==3.20.0
- pydantic ==2.6.1
- pydantic-core ==2.16.2
- pymupdf ==1.23.24
- pymupdfb ==1.23.22
- pyparsing ==3.1.1
- pypdf ==4.0.2
- pypdf2 ==3.0.1
- pypika ==0.48.9
- pyproject-hooks ==1.0.0
- pytesseract ==0.3.10
- python-dateutil ==2.8.2
- python-dotenv ==1.0.1
- python-iso639 ==2024.2.7
- python-magic ==0.4.27
- python-multipart ==0.0.9
- pytz ==2024.1
- pyyaml ==6.0.1
- rapidfuzz ==3.6.1
- regex ==2023.12.25
- requests ==2.31.0
- requests-oauthlib ==1.3.1
- rsa ==4.9
- safetensors ==0.4.2
- scipy ==1.12.0
- setuptools ==69.1.0
- six ==1.16.0
- sniffio ==1.3.0
- soupsieve ==2.5
- sqlalchemy ==2.0.27
- starlette ==0.36.3
- sympy ==1.12
- tabulate ==0.9.0
- tenacity ==8.2.3
- tiktoken ==0.6.0
- timm ==0.9.16
- tokenizers ==0.15.2
- torch ==2.2.0
- torchvision ==0.17.0
- tqdm ==4.66.2
- transformers ==4.37.2
- typer ==0.9.0
- typing-extensions ==4.9.0
- typing-inspect ==0.9.0
- tzdata ==2024.1
- unicodecsv ==0.14.1
- unstructured ==0.12.4
- unstructured-client ==0.18.0
- unstructured-inference ==0.7.23
- unstructured-pytesseract ==0.3.12
- urllib3 ==2.2.1
- uvicorn ==0.27.1
- uvloop ==0.19.0
- wand ==0.6.13
- watchfiles ==0.21.0
- websocket-client ==1.7.0
- websockets ==12.0
- werkzeug ==3.0.1
- wrapt ==1.16.0
- yarl ==1.9.4
- zipp ==3.17.0
