ORES

ORES (/ɔɹz/) is a web service and API that provides machine learning as a service for Wikimedia projects maintained by the wspt>Wikimedia Scoring Platform team|Scoring Platform team. The system is designed to help automate critical wiki-work – for example, vandalism detection and removal. Currently, the two general types of scores that ORES generates are in the context of “edit quality” and “article quality.”

ORES is a back-end service and does not directly provide a way to make use of the scores. If you'd like to use ORES scores, check our applications>ORES/Applications|list of tools that use ORES scores. If ORES doesn't support your wiki yet, see our support>Special:MyLanguage/ORES/Get support|instructions for requesting support.

Looking for answers to your questions about ORES? Check out the faq>ORES/FAQ|ORES FAQ.

Edit quality
One of the most critical concerns about Wikimedia's open projects is the review of potentially damaging contributions ("edits"). There's also the need to identify good-faith contributors (who may be inadvertently causing damage) and offer them support. These models are intended to make the work of filtering through the Special:RecentChanges feed easier. We offer two levels of support for edit quality prediction models: basic and advanced. Considering people can edit almost anything they want, it is difficult to allow the editing of almost every page.

Basic support
Assuming that most damaging edits will be reverted and edits that are not damaging will not be, we can build using the history of edits (and reverted edits) from a wiki. This model is easy to set up, but it suffers from the problem that many edits are reverted for reasons other than damage and vandalism. To help that, bwds>Special:MyLanguage/ORES/BWDS review|we create a model based on bad words.


 * – predicts whether an edit will eventually be reverted

Advanced support
Rather than assuming, we can ask editors to train ORES which edits are in-fact  and which edits look like they were saved in. This requires additional work on the part of volunteers in the community, but it affords a more accurate and nuanced prediction with regards to the quality of an edit. Many tools will only function when advanced support is available for a target wiki.


 * – predicts whether or not an edit causes damage
 * – predicts whether an edit was saved in good-faith

Article quality
The quality of Wikipedia articles is a core concern for Wikipedians. New pages must be reviewed and curated to ensure that spam, vandalism, and attack articles do not remain in the wiki. For articles that survive the initial curation, some of the Wikipedians periodically evaluate the quality of articles, but this is highly labor intensive and the assessments are often out of date.

New article evaluation
The faster that seriously problematic types of draft articles are removed, the better. Curating new page creations can be a lot of work. Like the problem of counter-vandalism in edits, machine predictions can help curators focus on the most problematic new pages first. Based on comments left by admins when they delete pages (see the 1>Special:MyLanguage/Manual:Logging table|logging table), we can train a model to predict which pages will need quick deletion. See en:WP:CSD for a list of quick deletion reasons for English Wikipedia. For the English model, we used g3>w:en:WP:CSD#G3|G3 "vandalism", g10>w:en:WP:CSD#G10|G10 "attack", and g11>w:en:WP:CSD#G11|G11 "spam".


 * – predicts if the article will need to be speedy deleted (spam, vandalism, attack, or OK)

Existing article assessment
For articles that survive the initial curation, some of the large Wikipedias periodically evaluate the quality of articles using a scale that roughly corresponds to the wp10>w:en:WP:Wikipedia 1.0|English Wikipedia 1.0 assessment rating scale ("articlequality"). Having these assessments is very useful because it helps us gauge our progress and identify missed opportunities (e.g., popular articles that are low quality). However, keeping these assessments up to date is challenging, so coverage is inconsistent. This is where the  machine learning model comes in handy. By training a model to replicate the article quality assessments that humans perform, we can automatically assess every article and every revision with a computer. This model has been used to help WikiProjects triage re-assessment work and to explore the editing dynamics that lead to article quality improvements.

The articlequality model bases its predictions on structural characteristics of the article. E.g. How many sections are there? Is there an infobox? How many references? And do the references use a cite template? The articlequality model doesn't evaluate the quality of the writing or whether or not there's a tone problem (e.g. a point of view being pushed). However, many of the structural characteristics of articles seem to correlate strongly with good writing and tone, so the models work very well in practice.


 * – predicts the (Wikipedia 1.0-like) assessment class of an article or draft

Topic routing


ORES' article topic model applies an intuitive 1>Special:MyLanguage/ORES/Articletopic#Taxonomy|top-down taxonomy to any article in Wikipedia -- even new article drafts. This topic routing is useful for curating new articles, building work lists, forming new WikiProjects, and analyzing coverage gaps.

ORES topic models are trained using word embeddings of the actual content. For each language, a language-specific embedding is learned and applied natively. Since this modeling strategy depends on the topic of the article, topic predictions may differ between languages depending on the topics present in the text of the article.

New article evaluation


The biggest difficulty with reviewing new articles is finding someone familiar with the subject matter to judge notability, relevance, and accuracy. Our   model is designed to route newly created articles based on their apparent topical nature to interested reviewers. The model is trained and tested against the first revision of articles and is thus suitable to use on new article drafts.


 * – predicts the topic of an a new article draft

Topic interest mapping


The topical relatedness of articles is an important concept for the organization of work in Wikipedia. Topical working groups have become a common strategy for managing content production and patrolling in Wikipedia. Yet a high-level hierarchy is not available or query-able for many reasons. The result is that anyone looking to organize around a topic or make a work-list has to do substantial manual work to identify the relevant articles. With our  </> model, these queries can be done automatically.


 * – predicts the topic of an article

Support table
The [<tvar|url>https://ores-support-checklist.toolforge.org/</> ORES support table] reports the status of ORES support by wiki and model available. If you don't see your wiki listed, or support for the model you'd like to use, you can gsup>Special:MyLanguage/ORES/Get support</>|request support.

API usage
ORES offers a Restful API service for dynamically retrieving scoring information about revisions. See <tvar|oreso>https://ores.wikimedia.org</> for more information on how to use the API.

If you're querying the service about a large number of revisions, it's recommended to batch no more than 50 revisions within a given request as described below. It's acceptable to use up to 4 parallel requests. Please do not exceed these limits or ORES can become unstable. For even larger number of queries, you can run ORES locally

 Example query:  |wp10&revids=34854345|485104318 http://ores.wmflabs.org/v3/scores/enwiki/?modelsdraftquality|wp10&revids34854345|485104318

 Example query:  https://ores.wikimedia.org/v3/scores/wikidatawiki/421063984/damaging

EventStream usage
The ORES scores are also provided as an 1>:wikitech:EventStream</>|EventStream at <tvar|url>https://stream.wikimedia.org/v2/stream/revision-score</>

Local usage
To run ORES locally you can install the [<tvar|url>https://github.com/wikimedia/ores</> ORES Python package] by:

Then you should be able to run it through :

You should see output of