Coder Social home page Coder Social logo

rmzelle / ref-extractor Goto Github PK

View Code? Open in Web Editor NEW
288.0 10.0 16.0 206 KB

Reference Extractor - Extract Zotero/Mendeley references from Microsoft Word files

Home Page: https://rintze.zelle.me/ref-extractor/

License: MIT License

HTML 32.59% JavaScript 65.40% CSS 2.00%
zotero mendeley docx citations microsoft-word

ref-extractor's Introduction

License

Reference Extractor

Reference Extractor is a free online tool to extract Zotero and Mendeley references from Microsoft Word and LibreOffice documents. References must have been inserted with the Zotero or Mendeley word processor plugins and must not have been converted to plain text.

Reference extractor allows you to:

  • Extract Zotero and Mendeley references and save them to CSL JSON, BibTeX, or RIS format, or as a rendered bibliography in APA style.

    Scenario 1: You lost your Zotero/Mendeley library but still have your documents. Extraction allows you to recover the items you cited in your documents and import them back into your reference manager. Note that imported items won't be linked to the items in the document you extracted them from.

    Scenario 2: Somebody sent you a document and you would like to get the cited items into your own reference manager library.

  • Select the original cited items in your existing Zotero libraries [only available for Zotero]. Once items are selected in Zotero, you can drag the items into a new collection or apply a tag.

    Scenario: You wish to create a collection for the items you've cited in a manuscript.

  • Count the number of times each item has been cited.

  • Identify the Citation Style Language citation style used in the document.

Tips for use

Once you have successfully extracted the references from a document, the output, as CSL JSON, BibTeX, RIS, or formatted APA bibliography, can be either downloaded or copied to the clipboard.

To import a downloaded CSL JSON, BibTeX, or RIS file into Zotero, open Zotero's File menu, select "Import..." and select the downloaded output file. Or, if you used the "Copy to clipboard" button of this tool, select "Import from Clipboard".

The format with highest fidelity is CSL JSON, as this is the format used by Zotero and Mendeley to embed item metadata in word processor documents. All other output formats involve a format conversion. If you discover issues with the BibTeX or RIS output formats, but need a format other than CSL JSON, try importing the CSL JSON file into Zotero, and then use Zotero to convert the references to the desired output format.

Support

I offer Reference Extractor for free as MIT-licensed open source software. I also care about your privacy. Reference Extractor does all its work on your own computer, and your documents are never sent across the internet. No snooping, no tracking, no ads.

If you found this tool useful, please support this project by starring this GitHub repository, or by giving a small donation via e.g. PayPal (see also the Sponsor button at the top of this repository).

Troubleshooting

If Reference Extractor doesn't work or find any items in your word processor document, there are several possible causes:

  • Make sure your Word document has been saved in the ".docx" format, or your LibreOffice document in the ".odt" format
  • Try a different browser, like Firefox or Google Chrome
  • If you have JavaScript disabled (e.g. by using a browser extension like NoScript), enable JavaScript for this webpage
  • The citations in the document might not (or no longer) be active field codes. Active field codes have grey shading by default, while inactive citations have white shading and look and behave like regular text. You can also confirm citations are active by toggling the field codes by pressing Alt+F9 or Option+F9 in Word. After pressing this shortcut, active Zotero and Mendeley field codes will expand and show the embedded citation metadata. Toggled Zotero fields start with "ADDIN ZOTERO_ITEM CSL_CITATION", and toggled Mendeley fields start with "ADDIN CSL_CITATION".
  • The citations in the document have been inserted with a different reference manager.
  • [Zotero] For documents with over 220 references, the "Select in Zotero" links may not work correctly. This issue appears to be limited to Windows. Either only about 220 items are selected in Zotero, or no items are selected at all. If this happens, a workaround is to split your document into multiple documents that each have a reference count under this limit.
  • [Zotero] For older documents with Zotero references, note that Zotero started offering embedded metadata in 2012 with Zotero 3.0. Documents last updated with earlier versions of Zotero don't contain extractable citations. For documents last updated with Zotero 3.x and 4.x, extraction is only possible if the option "Store references in document" was checked in the Zotero document preferences. Zotero 5.x always embeds item metadata.
  • [Zotero] For Word documents with Zotero references, references must be stored as "Fields", not "Bookmarks". For LibreOffice documents, references must be stored as "ReferenceMarks", not "Bookmarks". This can be changed for existing documents through the Zotero document preferences.

If you can't find a solution, https://www.zotero.org/support/kb/importing_formatted_bibliographies describes several alternative methods that e.g. work with plain text citations.

Getting help

To report issues or feature requests, please file a GitHub issue or send me a tweet.

Developers

Examples of how Zotero and Mendeley embed cited items in Word .docx documents can be seen at https://github.com/rmzelle/ref-extractor/wiki.

Reference Extractor uses the Citation.js JavaScript library for reference format conversion.

Testimonials

Reference Extractor has been recommended by the following institutions:

Licensing

This repository is released under the MIT license.

ref-extractor's People

Contributors

nchachereau avatar rmzelle avatar zuphilip avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

ref-extractor's Issues

Possible Issue with Zotero Update

Reference Extractor's "Select in Zotero" function works fine in 5.0.97-beta.61+d955a77e9 (Windows 11). But the same references from the same document aren't selected with 5.0.97-beta.63+035aac30f (Windows 10).

Has something with the interaction between Reference Extractor and Zotero broken in the latest Zotero beta update?

Sync between Zotero and Word document after extraction

Hi,

Thanks for this tools. Really nice.

I extracted Zotero references from a Word document in CSL JSON format. All went well.
But there is no synchronization between Zotero and the document.
When I modify a reference in Zotero, the modification does not synchronize in the Word document after a refresh.

Is it a normal situation or do I have to do something else?
Do I have to "reactivate" (enter again with Add/Edit Citation) in the Word document each citation so that Zotero will recognize them?

Thanks,

François

Zotero rich text formatting not converted in bibTeX output

If text in a Zotero field uses rich text formatting (as per this), the formatting directives are not translated into TeX/LaTeX appropriate directives. For example, italics in a paper title gives this in the BibTeX output:

title={{Effect of orientation on broadband acoustic scattering of Antarctic krill {\textless}i{\textgreater}Euphausia superba{\textless}/i{\textgreater}: Implications for inverting zooplankton spectral acoustic signatures for angle of orientation}}

(the Euphausia superba words should rather be enclosed in \textit{}

Add documentation

Would be good to point out the ability in Juris-M to reimport cited items, and how things work generally.

Generate zotero://select/ link for all Zotero items

Zotero recently added the ability to select multiple Zotero items in a user's library via a zotero://select/ link with item keys, using the syntax:

zotero://select/library/items?itemKey=ABCD2345,BCDE9876

Generating this link from extracted metadata would be useful for users who still have access to their original library. Running their manuscript through ref-extractor and using the zotero://select/ link probably would be the easiest way to identify which items have been cited, at least until Zotero introduces proper document collections (zotero/zotero#21).

(see also https://forums.zotero.org/discussion/75794/feature-request-allow-multiple-item-selection-with-zotero-select)

Add license

mammoth.js is BSD, and I'm using a customized copy, but would rather use MIT for the page itself.

"Select in Zotero" functionality doesn't work properly for documents with many references

Per https://forums.zotero.org/discussion/84241/zotero-select-links-not-working-with-many-items, there seems to a Windows-specific issue where Zotero select links don't work if they contain more than approximately 220 items.

With Firefox, items are selected up to this limit, while with Google Chrome, the item selection stops working altogether. It appears that the Zotero select URL is somehow truncated by the browser/system before it is registered by Zotero.

Users can currently work around this limitation by dividing Word documents into smaller ones, so that each smaller file stays under this limit. Or they can find a macOS or Linux system. On the ref-extractor side, we could also automatically generate multiple Zotero select links if the detected system is Windows, and over 220 items are extracted.

Return to unmodified copy of mammoth.js

I'm currently using a modified copy of the mammoth.js library to extract the contents of the <w:instrText/> elements in the word/document.xml file within the .docx archives. The native library doesn't allow field codes to be extracted and isolated (see mwilliamson/mammoth.js#98).

It would be nice if we could avoid the need for a modified library. Maybe a future version of mammoth.js will allow for what we need. Alternatively, perhaps it's better to just replace mammoth.js by a library to unzip the .docx file and parse the word/document.xml file with a standard XML parser.

Deduplicate results

Looks like Zotero embeds a full copy of the item metadata every time a particular item is cited, so I should do some deduplication.

Can probably just deduplicate by comparing the value of "id" (instead of comparing the contents of all fields).

Show the workflow in an animated gif

I guess that it could help to see the whole workflow with ref-extractor as a small animated gif which can be placed here and on your website. What do you think?

Multiple entires in document

Hi!

I have a highly specific issue. I am working with my thesis which stretched over years. I have written parts 1, 2 and 3 in separate documents and from separate computers. Now I want to assemble the final version. I have copied the content of all three documents to a single documents. The problem is that Zotero does not seem to automatically merge the entries. Most are merged, but some appear twice in the bibiography and is treated separately in my notes. I want to solve the issue without going through one by one all citations. I have found no exact help for my issue on the forums. I have tried to extract the references with this tool from the .docx document, import to my Zotero and then merge all duplicates within my Zotero library, but this seems to have no effect on the document.

Looking forward to your help.

Reference Extractor not extracting all references

Thanks for this amazing tool! I'm having an issue, though, with it not pulling all references. Can you help?

I am trying to pull from a .docx file that someone else created and sent to me. Document preferences seem to be set correctly, but the reference extractor is only pulling 15 of 20 unique records.

Any idea what I am doing wrong? TIA!

ref extractor snip 1
ref extractor snip 2

Support Mendeley fields

Looks like Mendeley uses very similar fields, just with a different field prefix:

<w:instrText>ADDIN CSL_CITATION { ... }</w:instrText>

with content

 {
    "citationItems": [{
        "id": "ITEM-1",
        "itemData": {
            "DOI": "10.1128/AEM.02591-07",
            "abstract": "Malic acid is a potential biomass-derivable \u201cbuilding block\u201d for chemical synthesis. Since wild-type Saccharomyces cerevisiae strains produce only low levels of malate, metabolic engineering is required to achieve efficient malate production with this yeast. A promising pathway for malate production from glucose proceeds via carboxylation of pyruvate, followed by reduction of oxaloacetate to malate. This redox- and ATP-neutral, CO2-fixing pathway has a theoretical maximum yield of 2 mol malate (mol glucose)\u22121. A previously engineered glucose-tolerant, C2-independent pyruvate decarboxylase-negative S. cerevisiae strain was used as the platform to evaluate the impact of individual and combined introduction of three genetic modifications: (i) overexpression of the native pyruvate carboxylase encoded by PYC2, (ii) high-level expression of an allele of the MDH3 gene, of which the encoded malate dehydrogenase was retargeted to the cytosol by deletion of the C-terminal peroxisomal targeting sequence, and (iii) functional expression of the Schizosaccharomyces pombe malate transporter gene SpMAE1. While single or double modifications improved malate production, the highest malate yields and titers were obtained with the simultaneous introduction of all three modifications. In glucose-grown batch cultures, the resulting engineered strain produced malate at titers of up to 59 g liter\u22121 at a malate yield of 0.42 mol (mol glucose)\u22121. Metabolic flux analysis showed that metabolite labeling patterns observed upon nuclear magnetic resonance analyses of cultures grown on 13C-labeled glucose were consistent with the envisaged nonoxidative, fermentative pathway for malate production. The engineered strains still produced substantial amounts of pyruvate, indicating that the pathway efficiency can be further improved.",
            "author": [{
                "dropping-particle": "",
                "family": "Zelle",
                "given": "Rintze M.",
                "non-dropping-particle": "",
                "parse-names": false,
                "suffix": ""
            }, {
                "dropping-particle": "",
                "family": "Hulster",
                "given": "Erik",
                "non-dropping-particle": "de",
                "parse-names": false,
                "suffix": ""
            }, {
                "dropping-particle": "",
                "family": "Winden",
                "given": "Wouter A.",
                "non-dropping-particle": "van",
                "parse-names": false,
                "suffix": ""
            }, {
                "dropping-particle": "",
                "family": "Waard",
                "given": "Pieter",
                "non-dropping-particle": "de",
                "parse-names": false,
                "suffix": ""
            }, {
                "dropping-particle": "",
                "family": "Dijkema",
                "given": "Cor",
                "non-dropping-particle": "",
                "parse-names": false,
                "suffix": ""
            }, {
                "dropping-particle": "",
                "family": "Winkler",
                "given": "Aaron A.",
                "non-dropping-particle": "",
                "parse-names": false,
                "suffix": ""
            }, {
                "dropping-particle": "",
                "family": "Geertman",
                "given": "Jan-Maarten A.",
                "non-dropping-particle": "",
                "parse-names": false,
                "suffix": ""
            }, {
                "dropping-particle": "",
                "family": "Dijken",
                "given": "Johannes P.",
                "non-dropping-particle": "van",
                "parse-names": false,
                "suffix": ""
            }, {
                "dropping-particle": "",
                "family": "Pronk",
                "given": "Jack T.",
                "non-dropping-particle": "",
                "parse-names": false,
                "suffix": ""
            }, {
                "dropping-particle": "",
                "family": "Maris",
                "given": "Antonius J. A.",
                "non-dropping-particle": "van",
                "parse-names": false,
                "suffix": ""
            }],
            "container-title": "Applied and Environmental Microbiology",
            "id": "ITEM-1",
            "issue": "9",
            "issued": {
                "date-parts": [
                    ["2008"]
                ]
            },
            "page": "2766-2777",
            "title": "Malic Acid Production by Saccharomyces cerevisiae: Engineering of Pyruvate Carboxylation, Oxaloacetate Reduction, and Malate Export",
            "type": "article-journal",
            "volume": "74"
        },
        "uris": ["http://www.mendeley.com/documents/?uuid=23d11864-e841-3d60-8a56-32eefa603948"]
    }, {
        "id": "ITEM-2",
        "itemData": {
            "DOI": "10.1128/AEM.01077-10",
            "abstract": "Pyruvate carboxylase is the sole anaplerotic enzyme in glucose-grown cultures of wild-type Saccharomyces cerevisiae. Pyruvate carboxylase-negative (Pyc \u060a) S. cerevisiae strains cannot grow on glucose unless media are supplemented with C 4 compounds, such as aspartic acid. In several succinate-producing prokaryotes, phos-phoenolpyruvate carboxykinase (PEPCK) fulfills this anaplerotic role. However, the S. cerevisiae PEPCK encoded by PCK1 is repressed by glucose and is considered to have a purely decarboxylating and gluconeogenic function. This study investigates whether and under which conditions PEPCK can replace the anaplerotic function of pyruvate carboxylase in S. cerevisiae. Pyc \u060a S. cerevisiae strains constitutively overexpressing the PEPCK either from S. cerevisiae or from Actinobacillus succinogenes did not grow on glucose as the sole carbon source. However, evolutionary engineering yielded mutants able to grow on glucose as the sole carbon source at a maximum specific growth rate of ca. 0.14 h \u060a1 , one-half that of the (pyruvate carboxylase-positive) reference strain grown under the same conditions. Growth was dependent on high carbon dioxide concentrations, indicating that the reaction catalyzed by PEPCK operates near thermodynamic equilibrium. Analysis and reverse engineering of two independently evolved strains showed that single point mutations in pyruvate kinase, which competes with PEPCK for phosphoenolpyruvate, were sufficient to enable the use of PEPCK as the sole anaplerotic enzyme. The PEPCK reaction produces one ATP per carboxylation event, whereas the original route through pyruvate kinase and pyruvate carboxylase is ATP neutral. This increased ATP yield may prove crucial for engineering of efficient and low-cost anaerobic production of C 4 dicarboxylic acids in S. cerevisiae. Interest in biotechnological production of the four-carbon dicarboxylic acids fumarate, succinate, and malate from sugars has strongly increased in recent years (19), as these sugar-derived acids are seen as potential replacements for oil-derived chemical intermediates such as maleic anhydride (41). Meta-bolic engineering of Escherichia coli has resulted in strains capable of producing 73 g liter \u03ea1 succinate at pH 7.0 with a yield that, at 1.61 mol per mol glucose (21), is at 94% of the theoretical maximum. The crucial role of carboxylation reac-tions in this biotechnological process is illustrated by a carbon yield of 1.07 C mol succinate per C mol of glucose\u2026",
            "author": [{
                "dropping-particle": "",
                "family": "Zelle",
                "given": "Rintze M",
                "non-dropping-particle": "",
                "parse-names": false,
                "suffix": ""
            }, {
                "dropping-particle": "",
                "family": "Trueheart",
                "given": "Josh",
                "non-dropping-particle": "",
                "parse-names": false,
                "suffix": ""
            }, {
                "dropping-particle": "",
                "family": "Harrison",
                "given": "Jacob C",
                "non-dropping-particle": "",
                "parse-names": false,
                "suffix": ""
            }, {
                "dropping-particle": "",
                "family": "Pronk",
                "given": "Jack T",
                "non-dropping-particle": "",
                "parse-names": false,
                "suffix": ""
            }, {
                "dropping-particle": "",
                "family": "Maris",
                "given": "Antonius J A",
                "non-dropping-particle": "van",
                "parse-names": false,
                "suffix": ""
            }],
            "container-title": "Applied and Environmental Microbiology",
            "id": "ITEM-2",
            "issue": "16",
            "issued": {
                "date-parts": [
                    ["2010"]
                ]
            },
            "page": "5383-5389",
            "title": "Phosphoenolpyruvate Carboxykinase as the Sole Anaplerotic Enzyme in Saccharomyces cerevisiae",
            "type": "article-journal",
            "volume": "76"
        },
        "uris": ["http://www.mendeley.com/documents/?uuid=1916c171-8e1e-3ad9-b16b-f99beef40f81"]
    }],
    "mendeley": {
        "formattedCitation": "&lt;sup&gt;2,3&lt;/sup&gt;",
        "plainTextFormattedCitation": "2,3",
        "previouslyFormattedCitation": "&lt;sup&gt;2,3&lt;/sup&gt;"
    },
    "properties": {
        "noteIndex": 0
    },
    "schema": "https://github.com/citation-style-language/schema/raw/master/csl-citation.json"
 }

Handle citations divided over multiple w:instrText elements

Per #19 (comment) and #19 (comment). Currently these citations aren't extracted.

It's not really clear to me when citations are split over multiple w:instrText elements. Also, for in-text author-date citations, it's not clear how one can determine which w:instrText elements belong together. Split elements seem to have a shared w:p element as ancestor in the documents I've seen, but I'm not a 100% sure this is always the case (e.g. for citations within figure or table captions, etc.). For footnotes and endnotes it looks like there is always an ancestor element of w:footnote and w:endnote one level higher, respectively, which makes things easier, but for author-date citations everything falls within a shared w:body.

Extract EndNote metadata?

@adam3smith, @zuphilip, I just came across a Word document with active EndNote fields, and lo and behold, it looks like EndNote embeds item metadata as well, in XML format:

{ ADDIN EN.CITE
<EndNote>
  <Cite>
    <Author>Sikorski</Author>
    <Year>1989</Year>
    <RecNum>1</RecNum>
    <DisplayText>(1)</DisplayText>
    <record>
      <rec-number>1</rec-number>
      <foreign-keys>
        <key app="EN" db-id="eex59zpwv2v0zhezs9qvtfp2vf0sarppa5z0">1</key>
      </foreign-keys>
      <ref-type name="Journal Article">17</ref-type>
      <contributors>
        <authors>
          <author>Sikorski, R. S.</author>
          <author>Hieter, P.</author>
        </authors>
      </contributors>
      <auth-address>Department of Molecular Biology and Genetics, Johns Hopkins University School of Medicine, Baltimore, Maryland 21205.</auth-address>
      <titles>
        <title>A system of shuttle vectors and yeast host strains designed for efficient manipulation of DNA in Saccharomyces cerevisiae</title>
        <secondary-title>Genetics</secondary-title>
        <alt-title>Genetics</alt-title>
      </titles>
      <periodical>
        <full-title>Genetics</full-title>
        <abbr-1>Genetics</abbr-1>
      </periodical>
      <alt-periodical>
        <full-title>Genetics</full-title>
        <abbr-1>Genetics</abbr-1>
      </alt-periodical>
      <pages>19-27</pages>
      <volume>122</volume>
      <number>1</number>
      <edition>1989/05/01</edition>
      <keywords>
        <keyword>Centromere</keyword>
        <keyword>Culture Media</keyword>
        <keyword>DNA, Fungal/*genetics</keyword>
        <keyword>*Genetic Vectors</keyword>
        <keyword>Plasmids</keyword>
        <keyword>Restriction Mapping</keyword>
        <keyword>Saccharomyces cerevisiae/*genetics</keyword>
        <keyword>Transformation, Genetic</keyword>
      </keywords>
      <dates>
        <year>1989</year>
        <pub-dates>
          <date>May</date>
        </pub-dates>
      </dates>
      <isbn>0016-6731 (Print)
0016-6731 (Linking)</isbn>
      <accession-num>2659436</accession-num>
      <work-type>Research Support, Non-U.S. Gov't
Research Support, U.S. Gov't, P.H.S.</work-type>
      <urls>
        <related-urls>
          <url>http://www.ncbi.nlm.nih.gov/pubmed/2659436</url>
        </related-urls>
      </urls>
      <custom2>1203683</custom2>
      <language>eng</language>
    </record>
  </Cite>
</EndNote>
}

(I indented the XML; from the supplemental Word file at http://www.sciencedirect.com/science/article/pii/S1096717616301914 [https://doi.org/10.1016/j.ymben.2016.10.017])

Does this look anywhere close to the EndNote XML export format that Zotero can import? Do we have any good documentation of the EndNote XML format?

Support selection of cited Zotero group library items

Per https://twitter.com/danstillman/status/1141812891542347781, there appears to be a separate syntax for selecting group library items:

zotero://select/library/items?itemKey=[key1],[key2],[keyn]
zotero://select/groups/:groupID/items?itemKey=[key1],[key2],[keyn]

Within Word .docx documents, the item URIs look like (courtesy to @bwiernik for the group library examples):

"uris":["http://zotero.org/users/1386342/items/TANS5GUE"]
"uris":["http://zotero.org/groups/227594/items/2TK9HDKD"]
"uris":["http://zotero.org/groups/2268106/items/A86NXHJE"]

In view of the selection link syntax, we'll have to provide individual selection links for items cited from a user's personal library, and for items cited from one or more group libraries. Maybe use a button dropdown (https://getbootstrap.com/docs/3.4/components/#btn-dropdowns-single) so the Reference Extractor user can select which library/group to select items for.

Publicize existence of tool

Extract fields from unzipped XML?

It seems like you could extract field codes directly from the exploded XML source of the document. That would save the mammoth.js dependency, and should work (with a bit of tweaking maybe?) for both *.docx and *.odt source files.

How do you install?

I see the code. I don't see an .xpi file.
I'm assuming it's supposed to be installed as an add-on inside Zotero.
Could you provide installation/build instructions?

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.