{"version":3,"sources":["HoverReveal.tsx","Utils.tsx","Data.tsx","LoadDataComponent.tsx","App.tsx","SampleTable.tsx","AxisEvalTable.tsx","ComparisonTable.tsx","index.tsx"],"names":["HoverRevealComponent","props","state","revealed","always_revealed","prevProps","this","setState","className","onMouseEnter","onMouseLeave","children","placeholder","React","Component","parse_query_string","querystring","window","location","search","length","Error","result","pairs","substr","split","i","pair","decodeURIComponent","fetch_data","type","dataset","n_shards","a","shard","Math","floor","random","fetch","method","headers","response","json","alert","id","results","LoadDataComponent","data","console","log","update_data","orig_type","SubComponent","component","App","updateQueryParams","query_dict","page","update","setImmediate","key","event","target","value","updateState","err","error","style","fontWeight","exact","to","path","Samples","Comparisons","AxisEvals","Home","href","desc","SampleTableComponent","AxisEvalTableComponent","ComparisonTableComponent","index","incr","ref_heading","tldr","cnndm","post_div","info","subreddit","title","post","map","item","site","article","onClick","changeIndex","display","flexDirection","margin","flexBasis","flexGrow","reference","Object","entries","samples","name","sample","reveal_all","policies","keys","checked","onChange","e","scores","accuracy","coherence","coverage","overall","notes","color","choice","fetch_and_rerender","ReactDOM","render","createElement","document","getElementById"],"mappings":"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","file":"static/js/main.3b390f28.chunk.js","sourcesContent":["import React from 'react';\n\n\ntype HoverRevealProps = {\n always_revealed: boolean,\n placeholder?: string,\n}\ntype HoverRevealState = {\n revealed: boolean,\n};\nclass HoverRevealComponent extends React.Component {\n\tconstructor(props: HoverRevealProps) {\n\t\tsuper(props);\n\t\tthis.state = {\n\t\t\trevealed: props.always_revealed,\n\t\t};\n\t}\n\n componentDidUpdate(prevProps: HoverRevealProps) {\n if (prevProps.always_revealed !== this.props.always_revealed && this.state.revealed !== this.props.always_revealed) {\n this.setState({\n revealed: this.props.always_revealed,\n })\n }\n }\n\n\n\trender() {\n\t\tconst { revealed } = this.state;\n\n\t\treturn (\n\t\t\t
\n
this.setState({ revealed: this.props.always_revealed || !revealed, })}\n onMouseLeave={() => this.setState({ revealed: this.props.always_revealed || !revealed, })}\n >\n {\n revealed ? this.props.children :\n
\n \n {(this.props.placeholder || \"Hover to reveal\")}\n \n
\n }\n\t\t\t\t
\n\t\t\t
\n\t\t);\n\t}\n}\n\nexport default HoverRevealComponent;\n","export type SampleInfo = {\n info: any,\n samples: {[key: string]: string},\n}\n\nexport type AxisEvalInfo = {\n info: any,\n samples: {[key: string]: string},\n notes: {[key: string]: string},\n scores: {[key: string]: {[key: string]: string}},\n}\n\nexport type ComparisonInfo = {\n info: any,\n samples: {[key: string]: string},\n notes: {[key: string]: string},\n choice: string,\n confidence: number,\n scores: {[key: string]: {[key: string]: string}},\n}\n\n\nexport function encode_query_params(dict: {[key: string]: string}): string {\n return Object.keys(dict).map((k: string) => (k + '=' + encodeURIComponent(dict[k] + ''))).join('&');\n}\n\nexport function parse_query_string() {\n const querystring = window.location.search;\n if (querystring.length === 0) {\n return {};\n }\n if (querystring[0] !== '?') {\n throw new Error(\"query string \" + querystring);\n }\n var result: {[key: string]: string} = {};\n var pairs = querystring.substr(1).split('&');\n for (var i = 0; i < pairs.length; i++) {\n var pair = pairs[i].split('=');\n result[decodeURIComponent(pair[0])] = decodeURIComponent(pair[1] || '');\n }\n return result;\n}\n\n","import { SampleInfo } from './Utils';\n\nexport async function fetch_data(type: string, dataset: string, n_shards: number) {\n let result: Array;\n // if (process.env.NODE_ENV === 'development') {\n if (false) {\n result = [\n {\n info: {text: 'foo'},\n samples: {\n policy1: 'A sample from policy 1',\n policy2: 'A sample from policy 2',\n },\n },\n {\n info: {text: 'bar'},\n samples: {\n policy1: 'Another sample from policy 1',\n policy2: 'Another sample from policy 2',\n },\n },\n ];\n } else {\n try {\n let shard = Math.floor(Math.random() * n_shards);\n const response = await fetch(`data/${type}.${dataset}.${shard}.json`, {\n method: 'GET',\n headers: {\n 'Content-Type': 'application/json',\n // 'Content-Type': 'application/x-www-form-urlencoded',\n },\n // body: JSON.stringify({\n // }),\n });\n result = (await response.json());\n } catch (e) {\n alert(e);\n throw e\n }\n }\n return {\n id: Math.random(),\n results: result as any,\n dataset: dataset,\n };\n}\n\n","import React from 'react';\nimport { fetch_data } from './Data';\n\ntype LoadDataProps = {\n dataset: string,\n type: string,\n component: any,\n n_shards: number,\n};\n\ntype LoadDataState = {\n data: any | null,\n};\n\nexport default class LoadDataComponent extends React.Component {\n constructor(props: LoadDataProps) {\n super(props);\n\n this.state = {\n data: null,\n };\n }\n\n componentDidUpdate(prevProps: LoadDataProps) {\n if (this.props.dataset !== prevProps.dataset) {\n console.log('Data changed!');\n this.setState({ data: null })\n this.update_data()\n }\n }\n\n async update_data() {\n let orig_type = this.props.type;\n const data = (await fetch_data(this.props.type, this.props.dataset, this.props.n_shards)).results;\n if (this.props.type !== orig_type) {\n console.log('changed type')\n return;\n }\n this.setState({\n data: data,\n });\n }\n\n async componentDidMount() {\n this.update_data()\n }\n\n render() {\n const SubComponent = this.props.component;\n\n console.log('data', this.state.data)\n if (this.state.data === null) {\n return 'Loading...';\n }\n return (\n \n );\n }\n}\n","import React from 'react';\nimport './App.css';\n// import { debounce } from 'lodash';\nimport SampleTableComponent from './SampleTable'\nimport AxisEvalTableComponent from './AxisEvalTable'\nimport ComparisonTableComponent from './ComparisonTable'\nimport LoadDataComponent from './LoadDataComponent'\nimport { parse_query_string } from './Utils';\nimport {\n HashRouter as Router,\n Switch,\n Route,\n NavLink\n} from \"react-router-dom\";\n\ntype AppProps = {};\ntype StringSet = {[k: string]: boolean};\ntype AppState = {};\n\nclass App extends React.Component {\n constructor(props: AppProps) {\n super(props);\n\n this.state = {};\n this.updateQueryParams();\n }\n\n componentDidUpdate(prevProps: AppProps) {\n this.updateQueryParams();\n // if (this.props.all_data.id !== prevProps.all_data.id) {\n // console.log('Data changed!');\n // // this.setState(newState as any)\n // }\n }\n\n componentDidMount () {\n const query_dict = parse_query_string();\n if (query_dict.page) {\n // https://stackoverflow.com/questions/32307891/creating-a-location-object-in-typescript\n window.location = ('#' + query_dict.page) as any;\n }\n }\n\n updateQueryParams() {\n // const d: any = {}\n // TODO: prevent this from screwing up hashrouter\n // const newurl = window.location.protocol + \"//\" + window.location.host + window.location.pathname + '?' + encode_query_params(d);\n // window.history.pushState({ path: newurl }, '', newurl);\n }\n\n updateState(update: any) {\n this.setState(update);\n console.log('update', update);\n\n setImmediate(() => {\n this.updateQueryParams();\n });\n }\n\n handleStateChange(key: string, event: any) { // KeyboardEvent\n const update: any = {};\n update[key] = event.target.value;\n this.updateState(update);\n }\n\n showError(err: any) {\n // TODO: better\n console.error(err);\n alert(err);\n }\n\n render() {\n console.log('rerender');\n\n return (\n \n
\n \n\n {/* A looks through its children s and\n renders the first one that matches the current URL. */}\n
\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n
\n
\n );\n }\n}\n\nfunction Home() {\n return
\n

Home

\n

This website hosts samples from the models trained in the “Learning to Summarize from Human Feedback” paper. There are 5 categories of samples:

\n
    \n
  • TL;DR samples: posts from the TL;DR dataset, along with summaries from several of our models and baselines.
  • \n
  • TL;DR human comparisons: posts from the TL;DR dataset, along with two summaries from our models, and the summary that one of our labelers preferred. Also included are interpretation notes written by the labeler after only reading each summary (not the post).
  • \n
  • TL;DR evaluations: posts from the TL;DR dataset, along with summaries from several of our models and baselines. Each summary is evaluated on a 1-7 scale along four axes of quality by one of our labelers. Also included are interpretation notes written by the labeler after only reading each summary (not the post).
  • \n
  • CNN/DM samples: articles from the CNN/DailyMail dataset, along with summaries from several of our models and baselines.
  • \n
  • CNN/DM evaluations: articles from the CNN/DailyMail dataset, along with summaries from several of our models and baselines. Each summary is evaluated on a 1-7 scale along four axes of quality by one of our labelers. Also included are interpretation notes written by the labeler after only reading each summary (not the post).
  • \n
\n

Content warning

\n

As noted in our blog post and paper, the TL;DR dataset consists of user-submitted posts to the website reddit.com, and can contain content that is offensive or reflects harmful social biases. The data on this site is not filtered for content.

\n

The CNN/DM dataset consists of news articles from CNN and DailyMail. Some articles may be graphic.

\n
;\n}\n\nfunction Samples(props: any) {\n let desc = Samples are non-cherry-picked. Models use T=0 for sampling.;\n return (\n
\n {desc}\n
\n
\n \n
\n )\n}\n\nfunction AxisEvals(props: any) {\n let desc;\n if (props.dataset === \"cnndm\") {\n desc = Samples are non-cherry-picked. Models use T=0 for sampling. Shown in same format as shown for workers, with heuristic capitalization for all summaries (to make things fair, due to normalization of the T5 samples we had).;\n } else {\n desc = Samples are non-cherry-picked. Models use T=0 for sampling.;\n }\n return (\n
\n {desc}\n
\n
\n \n
\n )\n}\n\nfunction Comparisons(props: any) {\n return (\n
\n Everything non-cherry-picked. Models use T=0 for sampling.\n
\n
\n \n
\n )\n}\n\n\nexport default App;\n","import React from 'react';\nimport './SampleTable.css';\n// import { debounce } from 'lodash';\nimport { SampleInfo } from './Utils';\n\n\ntype SampleTableProps = {\n data: Array,\n dataset: string,\n}\ntype SampleTableState = {index: number};\nclass SampleTableComponent extends React.Component {\n constructor(props: SampleTableProps) {\n super(props);\n this.state = { index: Math.floor(Math.random() * this.props.data.length) };\n }\n\n handleStateChange(event: any) { // KeyboardEvent\n // this.setState({ text: event.target.value });\n }\n\n changeIndex(incr: number) {\n this.setState({ index: (this.state.index + incr + this.props.data.length) % this.props.data.length });\n }\n\n\n // componentDidUpdate(oldProps: SampleTableProps) {\n // if (oldProps.text !== this.props.text) {\n // // this.setState({\n // // text: this.props.text\n // // });\n // }\n // }\n\n render() {\n const dataset = this.props.dataset;\n // matches generate_axis_evals.json\n const ref_heading: string = ({\n tldr:\"Human-written reference TL;DR\", cnndm:\"Human-written reference summary\"\n } as any)[dataset];\n const data = this.props.data[this.state.index];\n console.log(data)\n let post_div = (
ERROR, UNKNOWN DATASET
);\n if (dataset === 'tldr') {\n post_div = (\n
\n Reddit Post\n
\n
\n Subreddit: /r/{data.info.subreddit}\n
\n Title: {data.info.title}\n
\n
\n {data.info.post.split('\\n').map((item: string, key: number) => {\n return {item}
\n })}\n
\n )\n } else if (dataset === 'cnndm') {\n post_div = (\n
\n News Article\n
\n
\n Site: {data.info.site}\n
\n Title: {data.info.title}\n
\n
\n {data.info.article.split('\\n').map((item: string, key: number) => {\n return {item}
\n })}\n
\n )\n }\n\n\n return (\n
\n
\n \n \n
\n
\n
\n {post_div}\n
\n
\n
\n {ref_heading}\n
\n
\n {data.info.reference}\n
\n {\n Object.entries(data.samples).map(([name, sample]) => {\n return (\n
\n {name}\n
\n
\n {sample}\n
\n );\n })\n }\n
\n
\n
\n \n \n
\n
\n );\n }\n}\n\nexport default SampleTableComponent;\n","import React from 'react';\nimport './AxisEvalTable.css';\n// import { debounce } from 'lodash';\nimport { AxisEvalInfo } from './Utils';\nimport HoverReveal from './HoverReveal';\n\n\ntype AxisEvalTableProps = {\n data: Array,\n dataset: string,\n}\ntype AxisEvalTableState = {\n index: number,\n reveal_all: boolean,\n};\nclass AxisEvalTableComponent extends React.Component {\n constructor(props: AxisEvalTableProps) {\n super(props);\n this.state = {\n index: Math.floor(Math.random() * this.props.data.length),\n reveal_all: false,\n };\n }\n\n handleStateChange(event: any) { // KeyboardEvent\n // this.setState({ text: event.target.value });\n }\n\n changeIndex(incr: number) {\n this.setState({ index: (this.state.index + incr + this.props.data.length) % this.props.data.length });\n }\n\n\n // componentDidUpdate(oldProps: AxisEvalTableProps) {\n // if (oldProps.text !== this.props.text) {\n // // this.setState({\n // // text: this.props.text\n // // });\n // }\n // }\n\n render() {\n const dataset = this.props.dataset;\n const data = this.props.data[this.state.index];\n console.log(data)\n let post_div = (
ERROR, UNKNOWN DATASET
);\n if (dataset === 'tldr') {\n post_div = (\n
\n Reddit Post\n
\n
\n Subreddit: /r/{data.info.subreddit}\n
\n Title: {data.info.title}\n
\n
\n {data.info.post.split('\\n').map((item: string, key: number) => {\n return {item}
\n })}\n
\n )\n } else if (dataset === 'cnndm') {\n console.log(data.info)\n post_div = (\n
\n News Article\n
\n
\n Site: {data.info.site}\n
\n Title: {data.info.title}\n
\n
\n {data.info.article.split('\\n').map((item: string, key: number) => {\n return {item}
\n })}\n
\n )\n }\n\n const policies = Object.keys(data.samples);\n\n return (\n
\n Keep all human evaluations revealed\n this.setState({reveal_all: e.target.checked})}\n />\n
\n
\n\n
\n \n \n
\n
\n
\n {post_div}\n
\n
\n {\n policies.map((name) => {\n const sample = data.samples[name];\n return (\n
\n
\n {name}\n
\n
\n {sample}\n
\n
\n \n Accuracy: {data.scores.accuracy[name]}\n
\n
\n Coherence: {data.scores.coherence[name]}\n
\n
\n Coverage: {data.scores.coverage[name]}\n
\n
\n Overall: {data.scores.overall[name]}\n
\n
\n Note: {data.notes[name]}\n
\n
\n
\n );\n })\n }\n
\n
\n
\n \n \n
\n
\n );\n }\n}\n\nexport default AxisEvalTableComponent;\n","import React from 'react';\nimport './ComparisonTable.css';\n// import { debounce } from 'lodash';\nimport { ComparisonInfo } from './Utils';\nimport HoverReveal from './HoverReveal';\n\n\ntype ComparisonTableProps = {\n data: Array,\n dataset: string,\n}\ntype ComparisonTableState = {\n index: number,\n reveal_all: boolean,\n};\nclass ComparisonTableComponent extends React.Component {\n constructor(props: ComparisonTableProps) {\n super(props);\n this.state = {\n index: Math.floor(Math.random() * this.props.data.length),\n reveal_all: false,\n };\n }\n\n handleStateChange(event: any) { // KeyboardEvent\n // this.setState({ text: event.target.value });\n }\n\n changeIndex(incr: number) {\n this.setState({ index: (this.state.index + incr + this.props.data.length) % this.props.data.length });\n }\n\n\n // componentDidUpdate(oldProps: ComparisonTableProps) {\n // if (oldProps.text !== this.props.text) {\n // // this.setState({\n // // text: this.props.text\n // // });\n // }\n // }\n\n render() {\n const dataset = this.props.dataset;\n const data = this.props.data[this.state.index];\n console.log(data)\n let post_div = (
ERROR, UNKNOWN DATASET
);\n if (dataset === 'tldr') {\n post_div = (\n
\n Reddit Post\n
\n
\n Subreddit: /r/{data.info.subreddit}\n
\n Title: {data.info.title}\n
\n
\n {data.info.post.split('\\n').map((item: string, key: number) => {\n return {item}
\n })}\n
\n )\n } else if (dataset === 'cnndm') {\n console.log(data.info)\n post_div = (\n
\n News Article\n
\n
\n Site: {data.info.site}\n
\n Title: {data.info.title}\n
\n
\n {data.info.article.split('\\n').map((item: string, key: number) => {\n return {item}
\n })}\n
\n )\n }\n\n const policies = Object.keys(data.samples);\n\n return (\n
\n Keep all human evaluations revealed\n this.setState({reveal_all: e.target.checked})}\n />\n
\n
\n\n
\n \n \n
\n
\n
\n {post_div}\n
\n
\n {\n policies.map((name, i) => {\n const sample = data.samples[name];\n return (\n
\n Sample {i+1}\n
\n
\n {sample}\n
\n );\n })\n }\n
\n
\n
\n \n
\n {\n policies.map((name, i) => {\n return (\n
\n
\n {name}\n
\n Note: {data.notes[name]}\n
\n );\n })\n }\n
\n
\n
\n
\n
\n
\n \n \n
\n
\n );\n }\n}\n\nexport default ComparisonTableComponent;\n","import React from 'react';\nimport ReactDOM from 'react-dom';\nimport './index.css';\nimport App from './App';\nimport { parse_query_string } from './Utils';\n\nasync function render() {\n const query_dict = parse_query_string();\n console.log('query dict', query_dict);\n\n async function fetch_and_rerender() {\n ReactDOM.render(\n React.createElement(App, {}),\n document.getElementById('main')\n );\n }\n\n await fetch_and_rerender();\n}\n\nrender();\n"],"sourceRoot":""}