LensKit
=======

LensKit is a set of Python tools for experimenting with and studying recommender
systems.  It provides support for training, running, and evaluating recommender
algorithms in a flexible fashion suitable for research and education.

.. tip::

    To start using LensKit, see :ref:`installation` and then :ref:`getting-started`.

News
----

..
    <script type="module" src="https://cdn.jsdelivr.net/npm/bsky-embed/dist/bsky-embed.es.js" async></script>
    <bsky-embed username="lenskit.org" limit="5"></bsky-embed>

.. raw:: html

    <a class="mastodon-feed"
        href="https://recsys.social/@LensKit"
        data-toot-limit="5"
        data-exclude-replies="true"
        data-exclude-reblogs="true">
        Follow us on Mastodon
    </a>
    <script type="module" src="https://esm.sh/emfed@1"></script>

..
    <link href="your/path/to/file/mastodon-timeline.min.css" rel="stylesheet" />
    <div id="mt-container" class="mt-container">
    <div class="mt-body" role="feed">
        <div class="mt-loading-spinner"></div>
    </div>
    </div>
    <script src="https://cdn.jsdelivr.net/npm/@idotj/mastodon-embed-timeline@4.7.0/dist/mastodon-timeline.umd.js" integrity="sha256-p6Xvd6OVSoasRG8M7ct20nnzGdnFMVapWyp9PGpW2Uo=" crossorigin="anonymous"></script>
    <script>
    const myTimeline = new MastodonTimeline.Init({
        instanceUrl: "https://recsys.social",
        userId: "111250921900064491",
        timelineType: "profile",
        profileName: "@LensKit",
        maxNbPostShow: 5,
        hideUserAccount: true,
        hideUnlisted: true,
        hideReblog: true,
        hideReplies: true,
    });
    </script>


Why use LensKit?
----------------

- Modular
- Flexible
- Tested

Connecting with LensKit
-----------------------

..
    <iframe allowfullscreen sandbox="allow-top-navigation allow-scripts allow-popups allow-popups-to-escape-sandbox" style="max-width:100vw;max-height:100vh;" height="800" src="https://mastofeed.com/apiv2/feed?userurl=https%3A%2F%2Frecsys.social%2Fusers%2FLensKit&theme=auto&size=100&header=true&replies=false&boosts=false"></iframe>

.. |mastodon| raw:: html

    <a href="https://recsys.social/@LensKit" rel="me" target="_blank"><i class="fa-brands fa-mastodon"></i> Mastodon</a>

.. |bluesky| raw:: html

    <a href="https://bsky.app/profile/lenskit.org" rel="me" target="_blank"><i class="fa-brands fa-bluesky"></i> BlueSky</a>

.. |subscribe| raw:: html

    <i class="fa-solid fa-user-plus"></i>

.. |discuss| raw:: html

    <i class="fa-solid fa-comments"></i>

.. |build| raw:: html

    <i class="fa-solid fa-hammer"></i>


-   |subscribe| **Follow us** on |bluesky| or |mastodon|.  We post LensKit-related
    announcements and information, and love to hear what you're doing with
    LensKit.

-   |discuss| **Join** the `GitHub discussions`_. This is where we answer questions about how
    to use LensKit or ideas for new contributions.  Release announcements are
    also posted here.

-   |build| **Contribute** to https://github.com/lenskit/lkpy/, where we
    keep the source code and issue tracker.  We take new contributions via
    GitHub pull requests.

.. _GitHub discussions: https://github.com/orgs/lenskit/discussions

.. toctree::
    :maxdepth: 1
    :hidden:

    guide/index
    api/index
    releases/index
    Research <research/index>
    catalogs

Acknowledgements
----------------

This material is based upon work supported by the National Science Foundation
under Grant Nos. 17-51278 and 24-15042. Any opinions, findings, and conclusions or
recommendations expressed in this material are those of the author(s) and do not
necessarily reflect the views of the National Science Foundation.
