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 logo

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.

Website

Usage

  1. Go to the CiteSync website and upload your research material.
  2. Clone this repository
  3. Navigate into the CiteSync folder.
  4. Install dependencies npm install.
  5. Run the server npm start. Microsoft Word should open now with the add-in loaded.
  6. Add your own research content.
  7. Highlight the text you want to cite and press the Cite button. The citation should get added inline and added to the bibliography section below.

Contributors

Demonstration Video

Demo Video

Owner

  • Name: Rajat Jacob
  • Login: RajatJacob
  • Kind: user
  • Location: Bangalore, India
  • Company: @delve-ai-org

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